pptx2video
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseConvert an edited PPTX to video
将编辑后的PPTX转换为视频
This is a standalone, general-purpose PowerPoint-to-video package. It has no
runtime dependency on , ResearchStudio-Reel, or , and
the complete CLI and renderer live in the installable Python
package. It is not limited to research papers or to a previously delivered
. Use any local PPTX as the visual source. Prefer canonical Author
Notes for precise narration and marker timing. When canonical Notes are absent,
read the same block grammar from Shape Alt Text. Never reuse rendered bundle
artifacts. Reusing a pristine block-level TTS cache entry is safe only when its
complete synthesis identity matches.
paper2videoppt-masterpptx2videovideo.pptx这是一个独立的通用PowerPoint转视频工具包,运行时不依赖、ResearchStudio-Reel或,完整的CLI和渲染器都包含在可安装的 Python包中。它不仅限于研究论文或已交付的,可使用任意本地PPTX作为视觉源。优先使用标准作者备注来实现精准旁白和标记时序。当标准备注缺失时,从形状替代文本中读取相同的块语法。切勿重复使用已渲染的包产物,只有当完整合成标识匹配时,复用纯净的块级TTS缓存条目才是安全的。
paper2videoppt-masterpptx2videovideo.pptxEntry point
入口点
Treat as a direct invocation of this skill. Use the
installed public CLI for all ordinary rendering:
/pptx2video <input.pptx>bash
pptx2video render <input.pptx> <new-output-directory> --resolution 1080pAdd to follow native animation targets; it is
independent of Spotlight and defaults to .
--animation-pointer cursor|lasernoneDo not import or execute private Paper2Video or ResearchStudio scripts. If the
CLI is unavailable, install the runtime from the public repository before
continuing:
bash
python -m pip install \
'pptx2video[svg] @ git+https://github.com/ai-nuts/pptx2video.git'
python -m playwright install chromium
pptx2video doctor --svg将视为对该功能的直接调用。所有常规渲染均使用已安装的公开CLI:
/pptx2video <input.pptx>bash
pptx2video render <input.pptx> <new-output-directory> --resolution 1080p添加参数可跟随原生动画目标;该参数独立于聚光灯功能,默认值为。
--animation-pointer cursor|lasernone请勿导入或执行私有Paper2Video或ResearchStudio脚本。若CLI不可用,请先从公开仓库安装运行环境,再继续操作:
bash
python -m pip install \
'pptx2video[svg] @ git+https://github.com/ai-nuts/pptx2video.git'
python -m playwright install chromium
pptx2video doctor --svgAuthoring contract
创作约定
For precise control, write a Notes block whose handle matches a top-level shape
or group:
text
undefined如需精准控制,请编写一个备注块,其句柄匹配顶层形状或组:
text
undefined[latency-card] latency-card
[latency-card] latency-card
A new latency card appears. [[Spotlight] It reports lower latency.]
Alt Text uses the same single-block grammar, including both leading `#`
characters. The semantic text after `]` is optional and is not spoken:
```textA new latency card appears. [[Spotlight] It reports lower latency.]
替代文本使用相同的单块语法,包括开头的两个`#`字符。`]`后的语义文本为可选内容,不会被朗读:
```text[latency-card] latency-card
[latency-card] latency-card
A new latency card appears. [[Spotlight] It reports lower latency.]
The baseline hash, generated ordering provenance, and semantic profiles live
inside the PPTX shape OOXML. The visible semantic after `]` is the concise
profile. PPTX generation or protocol writeback also persists a detailed
profile. Conflict display reads those stored values and uses deterministic
fallbacks for legacy decks, so it does not call an LLM. Native effect, target,
trigger, and delay data stay in PowerPoint's `p:timing` tree. They do not appear
in Notes or Alt Text. Older `[handle]` plus `Script:`, `[ID] handle`, and verbose
`[Paper2Video]` blocks remain readable and migrate to this unified form on the
next writeback. Keep Author Notes clean. Read
[references/editable_pptx.md](references/editable_pptx.md) for the
hidden provenance contract.
The stable handle resolves the target directly. By default, successfully
resolved canonical Notes blocks keep their current relative order as anchors.
Only narrated targets missing from Notes are inserted around those anchors by
current canvas geometry. The `--narration-order-policy author-notes` option is
retained as an explicit compatibility alias and produces the same
anchor-plus-insertion narration sequence. Animation Pane order independently
controls native animation row order and local effect timing. In the rendered
video, each Pane
phase is placed in output-only pre-roll immediately before its narrated block,
and the next phase waits for the preceding block to finish speaking. The only
canonical script marker is `Spotlight`; its
position determines an Edge word-boundary time or span. Legacy entrance markers
remain readable for migration, but they never replace, create, or reorder a
native animation.
Every delivered PPTX defaults to human-editable numbered click groups on every
slide. Make each non-`With Previous` Pane row the `On Click` leader of its own
top-level `mainSeq` group. Keep contiguous `With Previous` rows with that
leader so they share its canvas badge. PowerPoint derives the badge from this
topology; it is not a stored animation ID. Accept the rewrite only when effect
targets, presets, durations, delays, Pane start/end times, row order, and
simultaneous groups remain identical. Fail closed when the schedule cannot be
preserved. Use `--click-group-policy preserve` only when the source's automatic
click-group topology must remain unchanged.
For a PPT-native workflow without canonical Notes, put an explicit script in
the shape's Alt Text using the same grammar, and use the native Animation Pane
for effects:
```textA new latency card appears. [[Spotlight] It reports lower latency.]
基线哈希、生成的顺序来源以及语义配置文件存储在PPTX形状的OOXML中。`]`后的可见语义为简洁配置文件。PPTX生成或协议回写也会保留详细配置文件。冲突显示会读取这些存储值,并为旧版演示文稿使用确定性回退,因此无需调用LLM。原生效果、目标、触发器和延迟数据保留在PowerPoint的`p:timing`树中,不会出现在备注或替代文本中。旧版的`[handle]`加`Script:`、`[ID] handle`以及冗长的`[Paper2Video]`块仍可被读取,并在下次回写时迁移为这种统一格式。请保持作者备注简洁,阅读[references/editable_pptx.md](references/editable_pptx.md)了解隐藏的来源约定。
稳定句柄可直接解析目标。默认情况下,成功解析的标准备注块会保留其当前相对顺序作为锚点。仅当备注中缺少旁白目标时,才会根据当前画布几何结构将其插入到这些锚点周围。`--narration-order-policy author-notes`选项作为显式兼容别名保留,会生成相同的锚点加插入旁白序列。动画窗格顺序独立控制原生动画行顺序和局部效果时序。在渲染后的视频中,每个窗格阶段会被放置在仅输出的预滚动部分,紧邻其旁白块之前,下一个阶段需等待前一个块的旁白结束。唯一的标准脚本标记是`Spotlight`;其位置决定Edge词边界时间或跨度。旧版入口标记仍可被读取以用于迁移,但绝不会替换、创建或重新排序原生动画。
每个交付的PPTX默认在每张幻灯片上启用可人工编辑的编号点击组。将每个非`With Previous`的窗格行设为其自身顶层`mainSeq`组的`On Click`主导行。将连续的`With Previous`行与该主导行放在一起,使其共享画布标记。PowerPoint从这种拓扑结构生成标记,而非存储的动画ID。仅当效果目标、预设、时长、延迟、窗格开始/结束时间、行顺序和同步组保持不变时,才接受重写。当无法保留调度时,终止操作。仅当源文件的自动点击组拓扑必须保持不变时,才使用`--click-group-policy preserve`。
对于没有标准备注的PPT原生工作流,请使用相同语法在形状的替代文本中放入显式脚本,并使用原生动画窗格设置效果:
```text[latency-card] latency-card
[latency-card] latency-card
A new latency card appears and reports lower latency.
Read [references/animations.md](references/animations.md) before changing
effect names or resolving a protocol conflict.A new latency card appears and reports lower latency.
在更改效果名称或解决协议冲突前,请阅读[references/animations.md](references/animations.md)。Authority and conflict rules
权限与冲突规则
Apply this precedence:
- An explicitly selected user owns narration for that render.
script.json - Canonical Author Notes own handles. For narration, compare Notes and Alt Text with the last system-synchronized script hash stored in shape OOXML. A change on only one surface wins; if both changed differently, Notes wins and the authority report records the conflict.
- A canonical Alt Text block provides narration when Notes are absent or when its narration alone differs from the stored baseline. A new animated target with only plain pre-protocol Alt Text uses that text once as its initial script and is normalized to the unified block grammar.
- Narration order defaults to incremental insertion. Every successfully resolved canonical Notes block is an anchor and keeps its relative Notes order. Only narrated targets absent from Notes are inserted around those anchors. At least 35 percent vertical overlap forms horizontal bands read top-to-bottom. Within each band, at least 50 percent horizontal overlap forms vertical lanes read left-to-right, and every lane is completed top-to-bottom before advancing right. Moving an existing anchored shape does not reorder established narration; move its Notes block when that order must change. Silent targets without geometry remain deterministic at the end. The explicit
geometrypolicy remains available for compatibility and uses the same Notes-anchor plus geometry-insertion sequence. Both policies fail closed when a newly inserted narrated block has no usable top-level geometry. After resolving Notes, Alt Text, an explicitauthor-notes, or requested changed-element regeneration, but before TTS or output-bundle creation, compute two deterministic entrance sequences: a pure full-slide band/lane geometry order and native Animation Pane order. Number every eligible element again in each sequence; do not present the Notes-anchor narration sequence as geometry order. A conflict exists only when a relative inversion involves a newly inserted, Notes-missing narrated entrance target. This candidate filter does not geometrically reorder established Notes anchors. Ignore silent decoration, emphasis-only targets, and simultaneous groups. Emitscript.jsoncontaining only slides with such conflicts, including exact Pane-row move guidance. Slides without conflicts remain silent and require no decision.animation_order_authority.json - Animation Pane is the sole authority for ordinary native animation type,
row order, ,
On Click,With Previous, duration, and delay. The video scheduler preserves those local relationships while adding narration release gates between Pane phases. A script can supplement the native effects only withAfter Previous.Spotlight - Shape OOXML stores and canonical
orderSourcebeside the script hash. A no-conflict render writesorderIndexfor established Notes anchors andauthor_notesfor newly inserted blocks, then rewrites contiguous indices for the effective sequence. A confirmed Pane choice writesgeometryfor that selected conflict slide's effective entrance sequence.animation_pane - The PowerPoint canvas owns all visible pixels and geometry.
All 22 registered native entrance presets have explicit MP4 strategies. Complex
presets use named deterministic approximations and never silently become Fade.
Unknown entrance preset tuples and native animation classes outside the
supported entrance/emphasis contract fail explicitly.
When Notes and Alt Text both changed differently, Notes wins and the delivered
PPTX Alt Text is refreshed. When a legacy script entrance marker conflicts with
a native row, the native row wins and the conflict report records the ignored
marker. Without a native row, a legacy entrance marker is ignored rather than
inventing an animation. If a shape was deleted, remove its stale Notes block
and record it in ; never rebind it by position or by a
remaining Animation Pane row. Ambiguous live handles still fail closed.
removed_stale_notes遵循以下优先级:
- 显式选择的用户拥有该渲染的旁白权限。
script.json - 标准作者备注拥有句柄权限。对于旁白,将备注和替代文本与形状OOXML中存储的最后一个系统同步脚本哈希进行比较。仅其中一方有变更时,变更方获胜;若双方变更不同,备注获胜,并在权限报告中记录冲突。
- 当备注缺失或仅其旁白与存储的基线不同时,标准替代文本块提供旁白。带有纯协议前替代文本的新动画目标会将该文本作为初始脚本使用一次,并被标准化为统一块语法。
- 旁白顺序默认为增量插入。每个成功解析的标准备注块都是一个锚点,并保留其相对备注顺序。仅备注中缺少的旁白目标会被插入到这些锚点周围。至少35%的垂直重叠形成水平区域,按从上到下的顺序读取。在每个区域内,至少50%的水平重叠形成垂直列,按从左到右的顺序读取,且每列在向右推进前需完成从上到下的读取。移动现有锚点形状不会改变已确立的旁白顺序;若必须更改顺序,请移动其备注块。无几何结构的静默目标始终在末尾保持确定性。显式的
geometry策略仍可用于兼容,使用相同的备注锚点加几何插入序列。当新插入的旁白块没有可用的顶层几何结构时,两种策略都会终止操作。在解析备注、替代文本、显式author-notes或请求的变更元素再生后,在创建TTS或输出包之前,计算两个确定性入口序列:纯全幻灯片区域/列几何顺序和原生动画窗格顺序。在每个序列中重新为所有符合条件的元素编号;请勿将备注锚点旁白序列显示为几何顺序。仅当相对反转涉及新插入的、缺少备注的旁白入口目标时,才存在冲突。此候选过滤器不会对已确立的备注锚点进行几何重排序。忽略静默装饰、仅强调目标和同步组。生成仅包含此类冲突幻灯片的script.json,包括精确的窗格行移动指导。无冲突的幻灯片无需处理,也无需决策。animation_order_authority.json - 动画窗格是普通原生动画类型、行顺序、、
On Click、With Previous、时长和延迟的唯一权威。视频调度器在保留这些局部关系的同时,在窗格阶段之间添加旁白释放门。脚本仅可通过After Previous补充原生效果。Spotlight - 形状OOXML在脚本哈希旁存储和标准
orderSource。无冲突渲染会为已确立的备注锚点写入orderIndex,为新插入的块写入author_notes,然后重写有效序列的连续索引。确认的窗格选择会为该选定冲突幻灯片的有效入口序列写入geometry。animation_pane - PowerPoint画布拥有所有可见像素和几何结构。
所有22个已注册的原生入口预设都有明确的MP4策略。复杂预设使用命名的确定性近似值,绝不会自动变为淡入效果。未知的入口预设元组和超出支持的入口/强调约定的原生动画类会显式终止操作。
当备注和替代文本都发生不同变更时,备注获胜,交付的PPTX替代文本会被刷新。当旧版脚本入口标记与原生行冲突时,原生行获胜,并在冲突报告中记录被忽略的标记。若无原生行,旧版入口标记会被忽略,而非创建动画。若形状已被删除,请移除其过时的备注块并记录在中;切勿通过位置或剩余的动画窗格行重新绑定。模糊的活动句柄仍会终止操作。
removed_stale_notesOne-command render
一键渲染
Install the public runtime and verify both core and SVG dependencies before
rendering:
bash
python -m pip install \
'pptx2video[svg] @ git+https://github.com/ai-nuts/pptx2video.git'
python -m playwright install chromium
pptx2video doctor --svgThen invoke the local CLI:
bash
pptx2video render \
path/to/edited.pptx \
path/to/new_video_bundle \
--resolution 1080p--narration-order-policy geometry--narration-order-policy author-notesThe default processes every slide, not only
the first slide. It produces one numbered badge per sequential phase while
keeping rows in the same numbered group. is the
explicit opt-out.
--click-group-policy normalizeWith PreviouspreserveThe default is interactive only when stdin is
a TTY. It prompts only for conflict slides, in ascending slide index, and waits
for each decision before showing the next conflict slide. For example, resolve
slide 2 before displaying slide 4. In non-interactive or API use, a detected
conflict writes the report and exits with code 3 before creating the output
directory.
--animation-order-policy autoWhen Codex or another skill presents that report in conversation, show exactly
one conflict slide at a time and wait for the user's choice before showing the
next. Use the report's deterministic text or ASCII canvas, draw each element's
OOXML bounding box rather than only its center, and show three vertically
stacked views that approximate the PPTX canvas's actual aspect ratio after
accounting for monospace character-cell proportions. Fit all dimensions to the
detected terminal width rather than clipping a canvas. Use identical outlines
in all three views. Put only the geometry rank number inside each box in
, only the Pane rank number inside the same box in , and only its stable identity letter such as , , or in
. Do not use combined labels such as . Identity
letters follow natural sort of stable , independently of both order
sequences, so they carry no ordering meaning. Give every canvas its own
key-to-semantic legend titled exactly . Beside , map each geometry rank number
to that element's semantic description. Beside , map
each Pane rank number to that element's semantic description. Beside , map each identity letter to that element's semantic description,
so a user can state an arbitrary preference such as . On a
wide terminal, place each legend to the right of its corresponding canvas. On
a narrower terminal, place it immediately below that canvas before presenting
the next view. The same selected profile applies to all three legends: default
to , or use the stored profile through
. Below 26 columns, omit the bbox plots but retain
three labeled textual views, each with its own numeric-rank or identity-letter
semantic mapping. Thin
one-line elements must remain visibly wide and thin. Do not use an LLM to infer
either sequence, the identity map, the layout, or the semantic text at
conflict-display time, and do not list all conflict slides at once. A Pane
choice applies
only to the selected conflict slide; it serializes that slide's eligible
narrated entrance blocks in Pane order and synchronizes delivered Notes and
OOXML provenance. Other conflict slides keep their own decisions, and
no-conflict slides retain Notes-anchor plus inserted-geometry provenance. If
the user chooses on any slide, stop and present the exact Pane
move guidance from the report; do not silently render a video whose schedule
differs from the delivered PPTX.
Geometry OrderAnimation Pane OrderABCElement Identity MapG1/P2shape_idLEGENDGeometry OrderAnimation Pane OrderElement Identity MapC -> A -> D -> Bconcisedetailed--semantic-profile detailedreading-orderParse a user-selected Identity order with deterministic .
For a conflict page whose Identity Map is through , means
exactly . Treat input case-insensitively and
canonicalize it to uppercase. Require a complete permutation of the current
page's displayed identities, rejecting missing, duplicate, unknown, empty, or
invalid labels. Compact undelimited input is valid while every label is one
letter. If a page extends past to , require separators such as
. In a TTY, accept the order directly for the displayed page. For
API or non-TTY use, accept for one conflict
page, or repeat for every conflict
page. If the sequence exactly matches the current Pane, record it as explicit
Pane confirmation and render. If it differs, persist its Identity and shape-ID
orders in the decision report and stop for a source-PPTX Pane revision. Never
render an order that disagrees with the delivered PPTX.
identity_order.v1AGCABGDEFC -> A -> B -> G -> D -> E -> FZAAA,B,...,AA--animation-order-sequence CABGDEF--animation-order-sequence SLIDE=ORDERRead references/cli.md for installation and arbitrary-path
usage. Add only when a user-edited
external script should override PPTX narration. This command must:
--script-json path/to/edited-script.json- Normalize unified Alt Text blocks from authoritative Notes when present.
- Generate handles and unified Alt Text blocks for new animation targets.
- Backfill canonical Notes when the source has only Alt Text or native rows.
- Extract narration using user script, Notes, then Alt Text precedence, and apply the selected narration-order policy independently of script authority.
- Normalize numbered click groups across every slide after change detection
and protocol writeback. Verify that the renderer's Pane clock is unchanged
and write .
assets/meta/reports/click_group_normalization.json - Materialize Edge TTS and word timings per narration block, reusing only exact
cache hits. During output assembly, prepend the corresponding Animation Pane
phase as silence before each narrated block, shift every Edge word boundary
by the same amount, then concatenate the blocks into slide audio. Generate
deterministic silent audio for a native-only silent slide. Preserve each
logical section ID in metadata while resolving its portable physical MP3
through .
manifest.json - Build the narration-serialized schedule: a narrated entrance completes before its first spoken word, and the following Pane phase starts only after the preceding narrated block ends. Preserve native simultaneous groups.
- Align every subtitle cue to its actual first and last Edge TTS word boundaries. Never use proportional timing in a final render.
- Render PPTX pixels, animations, audio, spotlight, and bottom-band subtitles. Read references/render_video.md for frame-source, attention-overlay, ffmpeg, performance, and debugging details.
- Write , subtitle-alignment evidence, mapping reports, and strict QA evidence.
timeline.json
Do not pass for a final render. Do not pass .
--prebuilt-audio-dir--no-qaThe persistent TTS cache is content addressed per block. Its invalidation key
is the SHA-256 of a canonical JSON identity containing normalized narration
SHA-256, voice, rate, pitch, provider, provider version, and cache schema
version. A timing-aware render accepts a hit only when audio, metadata, and
word-boundary evidence all match their hashes and cache key. Editing one block
therefore regenerates that block only; changing any synthesis setting or
provider version invalidates every affected key. Animation pre-roll and tail
padding happen after cache materialization and never contaminate the pristine
cache entry.
For a change-aware rerender, ordinary users choose whether to keep existing
narration or regenerate only changed elements. The latter requires a previous
PPTX baseline and an OpenAI API key:
bash
pptx2video render edited.pptx new-bundle \
--baseline-pptx previous-video.pptx \
--narration-mode regenerateRegenerated scripts are written back into both Author Notes and unified Alt
Text blocks in the delivered PPTX. remains an Advanced override, not the
normal editing surface.
script.json在渲染前安装公开运行环境并验证核心和SVG依赖:
bash
python -m pip install \
'pptx2video[svg] @ git+https://github.com/ai-nuts/pptx2video.git'
python -m playwright install chromium
pptx2video doctor --svg然后调用本地CLI:
bash
pptx2video render \
path/to/edited.pptx \
path/to/new_video_bundle \
--resolution 1080p--narration-order-policy geometry--narration-order-policy author-notes默认的会处理每张幻灯片,而非仅第一张。它为每个连续阶段生成一个编号标记,同时将行保留在同一编号组中。是显式的退出选项。
--click-group-policy normalizeWith Previouspreserve默认的仅在标准输入为TTY时才会交互。它仅针对冲突幻灯片按幻灯片索引升序提示,并在显示下一个冲突幻灯片前等待每个决策。例如,先解决幻灯片2的冲突,再显示幻灯片4。在非交互式或API使用中,检测到冲突时会写入报告并以代码3退出,不会创建输出目录。
--animation-order-policy auto当Codex或其他功能在对话中呈现该报告时,一次仅显示一张冲突幻灯片,等待用户选择后再显示下一张。使用报告的确定性文本或ASCII画布,绘制每个元素的OOXML边界框而非仅中心,并显示三个垂直堆叠的视图,近似PPTX画布在考虑等宽字符单元格比例后的实际宽高比。将所有尺寸适配检测到的终端宽度,而非裁剪画布。在所有三个视图中使用相同的轮廓。在的每个框内仅放置几何排名编号,在的同一框内仅放置窗格排名编号,在的同一框内仅放置其稳定标识字母(如、或)。请勿使用这类组合标签。标识字母遵循稳定的自然排序,独立于两个顺序序列,因此不带有排序含义。为每个画布提供一个标题为的键到语义图例。在旁,将每个几何排名编号映射到该元素的语义描述。在旁,将每个窗格排名编号映射到该元素的语义描述。在旁,将每个标识字母映射到该元素的语义描述,以便用户可以表达任意偏好,如。在宽终端上,将每个图例放在对应画布的右侧。在较窄终端上,在呈现下一个视图前,将图例立即放在对应画布下方。相同的选定配置文件适用于所有三个图例:默认使用,或通过使用存储的配置文件。在26列以下,省略边界框图,但保留三个带标签的文本视图,每个视图都有自己的数字排名或标识字母语义映射。细单行元素必须保持可见的宽而薄的状态。在冲突显示时,请勿使用LLM推断序列、标识映射、布局或语义文本,也请勿一次性列出所有冲突幻灯片。窗格选择仅适用于选定的冲突幻灯片;它会按窗格顺序序列化该幻灯片的所有符合条件的旁白入口块,并同步交付的备注和OOXML来源。其他冲突幻灯片保留各自的决策,无冲突幻灯片保留备注锚点加插入几何结构的来源。若用户在任何幻灯片上选择,请停止并呈现报告中精确的窗格移动指导;切勿静默渲染调度与交付的PPTX不同的视频。
Geometry OrderAnimation Pane OrderElement Identity MapABCG1/P2shape_idLEGENDGeometry OrderAnimation Pane OrderElement Identity MapC -> A -> D -> Bconcise--semantic-profile detaileddetailedreading-order使用确定性的解析用户选择的标识顺序。对于标识映射为到的冲突页面,表示确切的。不区分输入大小写,并将其规范化为大写。要求对当前页面显示的标识进行完整排列,拒绝缺失、重复、未知、空或无效的标签。无分隔符的输入有效,前提是每个标签为单个字母。若页面扩展到之后至,则需要分隔符,如。在TTY中,直接接受显示页面的顺序。对于API或非TTY使用,为一个冲突页面接受,或为每个冲突页面重复。若序列与当前窗格完全匹配,则记录为显式窗格确认并渲染。若不同,则在决策报告中保留其标识和形状ID顺序,并停止以进行源PPTX窗格修订。切勿渲染与交付的PPTX不一致的顺序。
identity_order.v1AGCABGDEFC -> A -> B -> G -> D -> E -> FZAAA,B,...,AA--animation-order-sequence CABGDEF--animation-order-sequence SLIDE=ORDER阅读references/cli.md了解安装和任意路径使用方法。仅当用户编辑的外部脚本应覆盖PPTX旁白时,才添加。此命令必须:
--script-json path/to/edited-script.json- 当存在权威备注时,将统一替代文本块标准化为权威备注。
- 为新动画目标生成句柄和统一替代文本块。
- 当源文件仅包含替代文本或原生行时,回填标准备注。
- 按照用户脚本、备注、替代文本的优先级提取旁白,并独立于脚本权限应用选定的旁白顺序策略。
- 在变更检测和协议回写后,标准化每张幻灯片的编号点击组。验证渲染器的窗格时钟未更改,并写入。
assets/meta/reports/click_group_normalization.json - 为每个旁白块生成Edge TTS和词时序,仅复用精确的缓存命中项。在输出组装期间,在每个旁白块前添加对应的动画窗格阶段作为静默部分,将每个Edge词边界移动相同的量,然后将块连接成幻灯片音频。为仅含原生动画的静默幻灯片生成确定性静音音频。在元数据中保留每个逻辑部分ID,同时通过解析其可移植的物理MP3。
manifest.json - 构建旁白序列化调度:旁白入口在第一个单词说出前完成,下一个窗格阶段仅在前一个旁白块结束后开始。保留原生同步组。
- 将每个字幕提示与实际的Edge TTS首尾词边界对齐。在最终渲染中切勿使用比例时序。
- 渲染PPTX像素、动画、音频、聚光灯和底部字幕。阅读references/render_video.md了解帧源、注意力覆盖、ffmpeg、性能和调试细节。
- 写入、字幕对齐证据、映射报告和严格的QA证据。
timeline.json
最终渲染请勿传递参数。请勿传递参数。
--prebuilt-audio-dir--no-qa持久化TTS缓存按块进行内容寻址。其失效键是包含标准化旁白SHA-256、语音、语速、音调、提供商、提供商版本和缓存架构版本的标准JSON标识的SHA-256。只有当音频、元数据和词边界证据都匹配其哈希和缓存键时,时序感知渲染才会接受命中项。因此,编辑一个块只会重新生成该块;更改任何合成设置或提供商版本都会使所有受影响的键失效。动画预滚动和尾部填充在缓存实例化后进行,绝不会污染纯净的缓存条目。
对于变更感知的重新渲染,普通用户可选择保留现有旁白或仅重新生成变更元素。后者需要之前的PPTX基线和OpenAI API密钥:
bash
pptx2video render edited.pptx new-bundle \
--baseline-pptx previous-video.pptx \
--narration-mode regenerate重新生成的脚本会回写到交付的PPTX的作者备注和统一替代文本块中。仍是高级覆盖选项,而非常规编辑界面。
script.jsonOrdinary animated PPTX
普通动画PPTX
If the deck does not yet contain canonical Notes and Alt Text, bootstrap a copy
from an existing narration script, then edit that copy:
bash
pptx2video bootstrap path/to/animated-source.pptx \
--script-json path/to/script.json \
--output path/to/editable-video.pptx \
--report path/to/bootstrap-report.json若演示文稿尚未包含标准备注和替代文本,可从现有旁白脚本引导生成副本,然后编辑该副本:
bash
pptx2video bootstrap path/to/animated-source.pptx \
--script-json path/to/script.json \
--output path/to/editable-video.pptx \
--report path/to/bootstrap-report.jsonCompletion gate
完成校验
Require these deliverables:
text
new_video_bundle/
video.mp4
video_no_subtitles.mp4
video.pptx
manifest.json
assets/audio/
assets/captions/
assets/meta/timeline.json
assets/meta/reports/author_notes_authority.json
assets/meta/reports/animation_order_authority.json
assets/meta/reports/click_group_normalization.json
assets/meta/reports/subtitle_timing_alignment.json
assets/meta/reports/video_qa_report.jsonConfirm the subtitle timing report has , then confirm
has , , and .
Do not claim completion until the strict renderer exits 0.
status: word_alignedvideo_qa_report.jsonpassed: trueerror: 0warning: 0需要交付以下内容:
text
new_video_bundle/
video.mp4
video_no_subtitles.mp4
video.pptx
manifest.json
assets/audio/
assets/captions/
assets/meta/timeline.json
assets/meta/reports/author_notes_authority.json
assets/meta/reports/animation_order_authority.json
assets/meta/reports/click_group_normalization.json
assets/meta/reports/subtitle_timing_alignment.json
assets/meta/reports/video_qa_report.json确认字幕时序报告的为,然后确认的为、为、为。在严格渲染器以0退出前,请勿声称完成。
statusword_alignedvideo_qa_report.jsonpassedtrueerror0warning0macOS local use
macOS本地使用
Read references/macos.md. Install the same Python package,
install Playwright Chromium, verify native and SVG dependencies with
, and invoke the standalone CLI from Terminal or an
external launcher.
pptx2video doctor --svg阅读references/macos.md。安装相同的Python包,安装Playwright Chromium,使用验证原生和SVG依赖,然后从终端或外部启动器调用独立CLI。
pptx2video doctor --svg