Tools

Archive Pilot

Archive an edit with every file it uses, each copy checked byte for byte.

Working Available to download. Below, a sample run from the terminal.

The problem

Handing off or archiving an edit is where files go missing. You find out months later, when the project opens full of red frames.

What I built

A command line tool that copies everything the project uses into one folder, and calls the archive complete only when every file is there and matches its source.

  • Lists what is missing before copying
  • Checks every copy against its source
  • Never changes the originals

DownloadSee it run

Features and limits

Built and tested

  • Reads the media a project references: Final Cut Pro 7 / Premiere Pro XML exports, FCPXML and plain lists; Premiere project files experimentally.
  • Plan first: lists found and missing files and the total size, without writing anything.
  • Collect copies the project and every file it finds, then checks each copy's SHA-256 against its source.
  • COMPLETE only when nothing is missing and every hash matches; otherwise INCOMPLETE, with the missing files named.
  • Keeps folder structure below the common root, so files with the same name never collide.
  • Writes archive_manifest.json and relink_map.csv; verify re-checks an archive at any time.
  • Never modifies sources and never overwrites an existing archive. Dry run by default.

Limits

  • After Effects .aep files are binary and are not read; use After Effects' Collect Files.
  • Tested on synthetic project files only, not yet on real exports from Premiere Pro or Final Cut Pro. Premiere project reading is experimental.
  • Tested on Linux only so far; macOS and Windows are not yet tested.
  • It does not rewrite paths inside the project; relink from relink_map.csv in your editor.

Planned

Hash verification, resumable transfers, cross-platform paths and re-link validation.

How to use
  • Export your sequence as XML (Premiere: File, Export, Final Cut Pro XML) or FCPXML, or list the files in a text file.
  • python3 archive_pilot.py plan project.xml shows what is found and missing.
  • python3 archive_pilot.py collect project.xml --out Archive --apply makes the archive.
  • python3 archive_pilot.py verify Archive/archive_manifest.json re-checks it, now or years later.
How it works
  • References are read from the project XML (pathurl, media-rep src), decoded from file URLs including Windows drive paths, and de-duplicated.
  • Copies are streamed and hashed with SHA-256; the project file's own hash is recorded too.
  • Archive layout mirrors folders below the common parent of all media.
  • Python standard library only.
Download
  • Download Archive Pilot 1.0.0 (ZIP, Python)v1.0.0 · 7.5 KB · MIT
    SHA-256 3f8715cc04ea31357c77427a9970c15764695c2202c3328582ab817ee437ac74
    Tested: Linux, Python 3.13 (5 automated tests on synthetic projects). macOS, Windows and real editor exports not yet tested.
Tested versions & limits
  • Pass Package: COMPLETE only when every file is found and hash-verified; sources untouched; no name collisions Linux, Python 3.13
  • Pass Package: a missing file makes the archive INCOMPLETE Linux, Python 3.13
  • Pass Package: verify catches a changed archive file Linux, Python 3.13
  • Pass Package: dry run writes nothing; existing archive never overwritten Linux, Python 3.13
  • Pass Package: reads FCPXML, plain lists, Premiere project XML, Windows file URLs (synthetic files) Linux, Python 3.13
  • Pass Release: tests re-run from the unzipped archive, public scan clean Linux

Last verified 2026-10-31.

Works on the listed formats, tested with synthetic projects on Linux. Not yet tested: real Premiere Pro and Final Cut Pro exports, macOS, Windows.

Details
Input
An XML or FCPXML export, or a list of media files
Output
Portable package and completeness report
Runs in
Command line tool for macOS, Linux or Windows with Python 3.9+ (tested on Linux, Python 3.13). No other installs.
Source
Original, rebuilt from scratch
  • After Effects
  • Script
  • Automation
  • Downloadable