PlainMotion

Narrated explainer videos from a YAML file

Turns a written plainmotion.yaml project into a narrated, deterministic MP4 — locally, with no network at render time and nothing to sign up for.

Poster frame from the demo video: a diagram titled 'From theme to video' with five nodes — Theme, Skill, SVG, Check, Render — and the caption 'Five steps, one repo'

This video was generated from a text file. The poster frame above is product output too.

How it works

1

Write the script

Scenes, narration text and cues as one plainmotion.yaml file. No timeline, no frame counts.

2

The narration is the clock

PlainMotion synthesises the narration locally and measures exactly how long each word takes to say — scene durations and cue timings come from that measurement.

3

Render, deterministically

plainmotion render produces one H.264 MP4, SRT/VTT caption sidecars, and a frozen render-plan.json — a re-render cannot disagree with the original.

The opening scene, as the author wrote it

scenes:
  # Act 1 — the claim.
  - id: hook
    type: title
    duration: auto
    narration:
      text: >
        This video was generated from a text file. No timeline. No screen
        recording. Just a script. Here is how.
    visual:
      headline: Generated from a text file
      subtitle: Every frame, every word — one file
    cues:
      - { atPhrase: "This video was generated", action: reveal, target: headline }
      - { atPhrase: "Just a script", action: reveal, target: subtitle }
      - { atPhrase: "Just a script", action: emphasize, target: headline }

— examples/plainmotion.yaml, the script behind PlainMotion's own demo video. Eight more scenes follow.

Why this one

Local and offline

No account, no API key, no telemetry. After two one-time downloads, rendering needs no network at all.

Deterministic

Every render emits a frozen render plan — the literal record of layout, timings and encoder arguments.

Agent-native

Every command speaks --json, and a bundled Claude Code skill knows the whole schema. You direct; the agent writes the yaml.

Free to use

The full engine is free — every render ends with a short "Made with PlainMotion" credit. One licence key removes it, permanently.

Pricing

Free
$0
  • The full engine, every scene type
  • Deterministic renders, captions, music bed
  • "Made with PlainMotion" closing credit
Pro
$59
  • Everything in Free
  • No closing credit, on this machine, forever
  • One key also activates Pro in PlainTake
Buy a licence