Skip to main content

SceneWeaver

SceneWeaver is a command-line tool for creating videos from a declarative YAML specification. Under the hood, it uses MoviePy to render and assemble scenes, allowing for repeatable and version-controllable video production.

For larger projects it supports modular composition and caching, and you can include other videos as well.

Feature
✅ Re-usable Templates Check the template library for a gallery.
✅ Animated SVGs Generate complex, animated graphics using templated SVG files.
✅ Repeatable Production Define videos in a version-controllable YAML specification.
✅ Scene-Based Composition Compose videos from modular scenes (images, video clips, templates, etc.).
✅ Intelligent Caching Automatically caches rendered scenes, only re-rendering what has changed.
✅ Interactive CLI Tool Interactive CLI for creating specs, adding scenes, and recording audio.
✅ Audio Integration & Recording Add audio tracks to scenes; includes a built-in recorder.
✅ Annotations, Transitions & Effects Apply text annotations, transitions, and video effects.

Installation

sudo apt install ffmpeg portaudio19-dev     # Ubuntu 24.04. May be different on other distros
pipx install sceneweaver

Usage

Starting

First, create a new specification file to define your video's structure.

sceneweaver create my_video.yaml    # creates a new template you can edit
sceneweaver generate my_video.yaml

Example specification

Here is a basic example of a my_video.yaml file:

settings:
  width: 1920
  height: 1080
  fps: 30
  output_file: "output.mp4"

scenes:
  - id: intro_card
    type: template
    name: title_and_subtitle
    with:
      title: Hello, SceneWeaver!
      subtitle: Using a built-in template
    audio: my/narration.wav
    transition:
      type: cross-fade
      duration: 1

  - id: main_image
    type: image
    duration: 10
    image: "~/path/to/your/image.png"
    stretch: false # Preserves aspect ratio
    width: 80 # As 80% of the screen width
    annotations:
      - type: text
        location: bottom
        content: This is a caption for the image.
    cache:
      max-size: "2GB"
    transition:
      type: cross-fade
      duration: 2

  - id: outro
    type: video
    file: something.mp4
    effects:
      - type: fade-out
        duration: 1

Other Commands

Rendering and Cache

  • Render a single scene (for quick previews):

    sceneweaver generate my_video.yaml:intro_card
    
  • Force re-rendering (ignoring the cache):

    sceneweaver generate my_video.yaml --force
    
  • Clear the cache of all previously rendered scenes:

    sceneweaver clean
    

Managing Scenes

  • Interactively add a new scene to your spec file. It will prompt for the scene type and required details.

    sceneweaver scene add my_video.yaml
    
  • Add a new image scene non-interactively with a specific ID (new_intro).

    sceneweaver scene add my_video.yaml:new_intro image
    
  • Record audio for a scene. It will prompt you to select which scene from the file.

    sceneweaver scene audio my_video.yaml
    
  • Directly record audio for the scene with the ID main_image.

    sceneweaver scene audio my_video.yaml:main_image
    

Managing Templates

  • List all available built-in and user-created templates.

    sceneweaver template list
    
  • Show details about a specific template, including its parameters and a usage example.

    sceneweaver template info title_and_subtitle
    
  • Create a new, empty user template in your local configuration directory, ready for you to customize.

    sceneweaver template create my_custom_title
    

Development

This project uses Pixi for environment and task management.

  • Setup the environment:

    pixi install
    
  • Run the app:

    pixi run sceneweaver my_template.yaml
    
  • Common tasks (run with pixi run <task>):

    • test: Run the test suite.
    • lint: Run all linters (flake8, pyflakes, pyright).
    • format: Format the code using Ruff.

Metadata

Release files for sceneweaver 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for sceneweaver 0.5.1
File Interpreter ABI Platform
sceneweaver-0.5.1-py3-none-any.whl Python 3 none any Details

Release files / sceneweaver-0.5.1-py3-none-any.whl

Download URL sceneweaver-0.5.1-py3-none-any.whl
Size 1.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
75a4ae0299ca84a84f8115035485b922aaaf62b8ccd5ce823b6bd20e96ae276e
BLAKE2b-256 checksum
How to use checksums
eb68ee8dc056de22e8118412a85f9957179c2bce94e96e876ed8dbc6c39ec35d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 29, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.1 This release

1 release file

0.5

1 release file

0.4

1 release file

0.3

1 release file

0.2

1 release file

0.1.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page