Page Transitions & Element Animations

August 15, 2026 · View on GitHub

English | Chinese


PPT Master writes page transitions and optional element object animations as real PowerPoint OOXML, not embedded video. Object animation includes entrance, emphasis, motion-path, and exit effects. This guide covers the choices and commands users need; exact effect mappings, the complete sidecar schema, anchor rules, and package validation live in the animation execution reference.

Default Behavior

LayerDefaultWhat it means
Page transitionfade, 0.4 secondsSlides change with a restrained visual transition
Element object animationnone (off)Each slide appears as a complete page; opt in only when motion helps the presentation

Changing animation settings does not require regenerating the slides. Reuse the same svg_output/; default release export still requires its current passing final SVG quality report. When no current matching passing final report exists, run the final checker and resolve its blockers before rerunning svg_to_pptx.py.

Common Recipes

GoalCommand
Keep the defaultspython3 skills/ppt-master/scripts/svg_to_pptx.py <project>
Change the page transitionpython3 skills/ppt-master/scripts/svg_to_pptx.py <project> -t push
Remove the visual transitionpython3 skills/ppt-master/scripts/svg_to_pptx.py <project> -t none
Auto-advance every 5 secondspython3 skills/ppt-master/scripts/svg_to_pptx.py <project> --auto-advance 5
Enable automatic element revealspython3 skills/ppt-master/scripts/svg_to_pptx.py <project> -a auto
Use one entrance effect throughoutpython3 skills/ppt-master/scripts/svg_to_pptx.py <project> --animation entrance_fade
Reveal elements on clickpython3 skills/ppt-master/scripts/svg_to_pptx.py <project> -a auto --animation-trigger on-click
Animate all elements togetherpython3 skills/ppt-master/scripts/svg_to_pptx.py <project> -a auto --animation-trigger with-previous
Slow the reveal sequencepython3 skills/ppt-master/scripts/svg_to_pptx.py <project> -a auto --animation-duration 0.5 --animation-stagger 0.8

Choose a Page Transition

Relationship between adjacent slidesStart with
Ordinary continuation within one sectionfade
Immediate change with no continuity to preservenone or cut
Directional steps, timeline, or visible layer progressionpush, wipe, cover, or uncover with a meaningful direction
The same object or scene changes position, size, crop, or appearancemorph
Section opening, key reveal, or marked state boundaryA selective split, reveal, shape, flash, or random_bars
A repeated collection advances through one spatial framepan, conveyor, or ferris_wheel; use Morph when individual objects must retain identity
The viewpoint travels around or through a continuous spacerotate, window, orbit, or fly_through
The theme supports a stage, paper, or physical-page metaphorA selective fall_over, drape, curtains, wind, prestige, peel_off, page_curl, airplane, origami, or doors
A disruptive beat represents breakage, collapse, or dispersalA selective fracture, crush, dissolve, vortex, or shred
A marked reveal benefits from a geometric, timed, or textured patternA selective checkerboard, blinds, clock, ripple, honeycomb, glitter, or comb
A card, panel, gallery, or viewpoint visibly turns or changes faceA selective switch, flip, gallery, cube, box, or zoom

Keep fade or none when no other transition adds meaning. Do not change effects merely to create variety; random is appropriate only when unpredictability is itself intentional.

The 48 canonical transition keys cover all three sections in the current PowerPoint gallery:

  • Subtle: morph, fade, push, wipe, split, reveal, cut, random_bars, shape, uncover, cover, flash.
  • Exciting: fall_over, drape, curtains, wind, prestige, fracture, crush, peel_off, page_curl, airplane, origami, dissolve, checkerboard, blinds, clock, ripple, honeycomb, glitter, vortex, shred, switch, flip, gallery, cube, doors, box, comb, zoom, random.
  • Dynamic Content: pan, ferris_wheel, conveyor, rotate, window, orbit, fly_through.

The old names strips, circle, diamond, newsflash, plus, pull, wedge, and wheel remain accepted only as compatibility inputs. New sidecars, plans, traces, and output use canonical keys. Compatibility inputs desugar into a native effect plus its Effect Options—for example, diamond becomes shape with shape: diamond, and wedge becomes clock with style: wedge.

Set effect-specific PowerPoint options in transition.effect_options. Direction, shape, pattern, Morph scope, black screen, page count, and bounce are validated against the selected effect. Run python3 skills/ppt-master/scripts/pptx_animations.py --describe-transition <effect> for the exact values. -t none removes the visual effect but does not remove an explicitly configured auto-advance timer.

Choose a Start Mode

Start modeBehaviorBest fit
on-clickOne content group appears per clickLive presentations where the speaker controls pacing
with-previousAll content groups animate together when the slide appearsA single coordinated entrance
after-previous (default)Groups appear sequentially without clicksKiosk playback, walkthroughs, and narrated decks

--recorded-narration does not support on-click; use after-previous or with-previous for narrated or video-ready output.

Choose an Object Animation

Start with none. When object motion has a communication job, choose its lifecycle before its visual effect:

Communication jobChoiceBoundary
Reveal information in reading or narration orderauto or a native entrance_* keyThis is the usual object-animation case
Redirect attention to an already visible objectAn explicit emphasis_* keyDo not use it as the object's first reveal
Show meaningful spatial or causal movementAn explicit path_* key, or Morph across adjacent slidesThe path itself should carry meaning; deliberate background ambience is an advanced exception
Remove, replace, or make room for content on the same slideAn explicit exit_* keyA normal slide change already removes the old page
Add deterministic or seeded variation to generic entrancesmixed or randomThese modes still select entrance effects only
No clear motion tasknoneKeep the slide static

The canonical registry contains 203 PowerPoint-native keys: 53 entrance, 33 emphasis, 64 motion path, and 53 exit presets. New selections, sidecars, automatic choices, traces, and examples use these category-qualified keys. auto, mixed, and random select entrances only. Use an explicit canonical key for emphasis, motion-path, or exit behavior. The 29 established short names remain accepted only as compatibility inputs; they normalize before writing and do not retain a second behavior engine. Old Fly direction names all normalize to entrance_fly, and old Wipe direction names all normalize to entrance_wipe; their direction is preserved as an option rather than another canonical preset. Legacy wheel keeps four spokes. Run python3 skills/ppt-master/scripts/pptx_animations.py --list for the complete categorized list. The four media playback commands are handled by the audio/video workflows because they require media or bookmark targets.

Add Sound After Choosing Motion

Sound effects are off by default. PPT Master includes a global CC0 discovery library, but it is not copied during strategy or ordinary project setup. First finish the SVG pages and choose the visual transition/object motion. Only when one of those resolved beats has a specific auditory job should you discover and sync a cue:

python3 skills/ppt-master/scripts/sound_sync.py list --query whoosh
python3 skills/ppt-master/scripts/sound_sync.py \
  <project> bigsoundbank/1797 kenney-interface/click_001

The second command copies only the selected files into <project>/sounds/<namespace>/. With no selected cue, PPT Master creates no project sound directory and copies nothing. The recommended catalog flag is a discovery shortlist, not an automatic choice:

python3 skills/ppt-master/scripts/sound_sync.py list --query recommended

Configuration always references the copied project-local path, never the global templates/sounds/ path or a library id:

{
  "version": 1,
  "slides": {
    "02_process": {
      "transition": {
        "effect": "push",
        "sound": "sounds/bigsoundbank/1797.wav"
      },
      "groups": {
        "next-step": {
          "effect": "entrance_fade",
          "sound": "sounds/kenney-interface/click_001.wav"
        }
      }
    }
  }
}

transition.sound uses WAV. Object-animation sound also accepts an existing project-relative or absolute .m4a, .mp3, or .wav input; bundled choices are WAV and should use the copied project-relative path. A transition-only cue may use a sparse animations.json; a slide-level transition.sound: null clears an inherited default sound. Validate before export. Do not add sound merely to demonstrate that the feature exists.

This validation proves the editable PPTX contains the native cue; it does not prove PowerPoint's MP4 audio track contains it. For direct narrated video with resolved cues, follow Audio Narration & Video Export and choose either the verified native-export sound mix or an explicit PowerPoint slideshow capture with system audio. Do not combine the two paths.

Customize Specific Objects

Use animations.json only when deck-wide settings are not enough—for example, one object entering, moving, drawing attention, and then leaving. List the real groups, write sparse overrides for only the affected slides and objects, validate, and export. scaffold is an optional neutral editing starter: it sets the default object effect to none, and untouched {} group entries do not enable animation.

python3 skills/ppt-master/scripts/animation_config.py list-groups <project>
python3 skills/ppt-master/scripts/animation_config.py validate <project>
python3 skills/ppt-master/scripts/svg_to_pptx.py <project>

The sidecar targets stable top-level <g id="..."> content groups. A group ID is a PowerPoint shape-target anchor, not an Animation Pane row. The compatible single-effect object still creates one row; an effects[] array can create several ordered rows that all target the same shape:

{
  "version": 1,
  "slides": {
    "03_threshold": {
      "animation": { "trigger": "after-previous" },
      "groups": {
        "risk-marker": {
          "effects": [
            { "effect": "entrance_fade", "order": 1, "duration": 0.25 },
            { "effect": "path_right", "order": 2, "delay": 0.1, "duration": 0.7 },
            { "effect": "emphasis_teeter", "order": 3, "trigger": "with-previous", "duration": 0.45 },
            { "effect": "exit_fade", "order": 4, "trigger_shape": "details-button", "duration": 0.3 }
          ]
        }
      }
    }
  }
}

A populated group uses either the legacy single-effect fields or the { "effects": [...] } form, never both. effects must be non-empty, and every row names an explicit effect. Existing single-effect sidecars remain fully compatible.

Common row fields are:

FieldPurpose
effectSelect one explicit effect; the legacy form may use none to keep that object static
triggerOverride this row's Start mode; otherwise inherit the slide animation trigger
orderOrder ordinary rows across the slide without changing slide layers; trigger-shape rows remain in separate interactive sequences
delayAdd a pause to this row's resolved Start behavior
durationOverride this row's scheduled animation duration
effect_optionsSet effect-specific direction, amount, color, font_name, relative, or size
trigger_shapeTrigger this row when another top-level group is clicked (PowerPoint On Click of)
Timing modifiersrepeat_count/repeat_duration, auto_reverse, rewind, accelerate, decelerate, bounce_end, and restart
Completionafter_effect (none, dim, hide, or hide on next click)
Sound cueOptional project-local sound path; bundled choices follow the on-demand sync above

order, delay, duration, trigger, and trigger_shape are resolved per row. The slide-level animation trigger is inheritance only. trigger_shape implies on-click; if the row also declares trigger, it must be on-click.

Use python3 skills/ppt-master/scripts/pptx_animations.py --describe <canonical_effect> to see exactly which options that effect accepts. Speed is controlled by duration; smooth start/end are controlled by accelerate/decelerate. Change Font's font_name is one concrete target-installed PowerPoint face, never a CSS font stack.

trigger_shape points to a different group id on the same slide and affects only its row. Recorded narration rejects any row that resolves to on-click, including trigger-shape rows.

When a user asks the AI to tune individual objects, use the customize-animations stage. The full sidecar schema and target-validation rules remain in the animation execution reference.

Validation & Compatibility

PPT Master validates animation settings strictly: unknown effects or Start modes, invalid timing values, missing slide/group references, and attempts to animate structural objects fail instead of silently changing behavior. Export also reads the candidate PPTX back before replacing an existing output.

BoundaryUser-facing consequence
Animation targetElement animation operates on logical top-level content-group anchors; one anchor may own several Animation Pane rows
Static structureBackgrounds, Master/Layout content, placeholders, and page chrome remain static
Unsupported object buildsNo paragraph/text-range builds, custom freeform motion-path authoring, native Chart/SmartArt build sequencing, or media playback commands are inferred from grouped SVG content
Output routeAnimation exists in the native PPTX generated from svg_output/; svg_final/ is a static preview
Existing PPTX routesTemplate Fill and Native Enhance preserve source object animation rather than translating it into this generated-deck model
PPTX-to-SVG importReconstructs only current-registry rows with exact native duration and unique top-level group targets; advanced/build/media timing remains diagnosed
Playback compatibilityMicrosoft PowerPoint desktop is the primary validation target; Keynote, WPS, LibreOffice, and older Office versions may remap or omit individual effects

For the full CLI reference, see svg-pipeline.md. For exact effect definitions, sidecar requirements, anchor fallback logic, and OOXML read-back rules, see the animation execution reference.