Every video editor or motion designer wastes 10–20 minutes at the start of every project doing the exact same thing: creating folders by hand, naming them consistently, opening After Effects, and setting up a new composition with the right resolution, framerate, and duration. It is not creative work. It is repetitive work. Multiply it by 50 projects a year and you have lost a full work week to folder creation and blank composition setup.
Aeset is a tool built to solve this for After Effects on macOS. It takes the "scaffolding" logic used by software developers and applies it to the motion design world.
Installation and Requirements
Installation
Aeset can be installed via pip:
pip install aeset
Requirements
- macOS (Intel & Apple Silicon: M1, M2, M3, M4+): AppleScript and the
opencommand are macOS-specific. - Adobe After Effects (Universal: AE 2020 through 2026+)
- Python 3.11+
Usage
Run the command
aeset
and then you're ready to scaffold your project.
1. What The Tool Does
The user opens their terminal, navigates to where they want the project to live, and runs:
aeset
The tool then asks a series of interactive questions:
- Project name (e.g., Nike_Ident_2026)
- Project type (Commercial, Personal, etc.)
- Resolution (Full HD, 4K, Vertical, etc.)
- Frame rate (24, 25, 30, 60 fps)
- Duration in seconds
- Color space (sRGB, Rec. 709, ACES)
After those answers, the tool:
- Creates a standardized folder tree inside a new project directory.
- Generates an ExtendScript
.jsxfile tailored to your specifications. - Automatically launches your installed version of After Effects.
- Uses AppleScript to run the
.jsxsetup script, which builds the composition, organizes project bins, and saves a native.aepproject file.
2. Folder Structure Generated
Aeset generates a directory layout that follows conventions used by professional motion studios. The core principle is: never mix source files with outputs.
On Disk:
<ProjectName>/
├── project/
│ ├── <ProjectName>.aep (native After Effects project)
│ └── setup.jsx (project initialization script)
├── footage/
│ ├── video/ (raw video clips)
│ ├── audio/ (music, SFX, voiceover)
│ └── renders/ (outputs from C4D, Blender, etc.)
├── assets/
│ ├── images/ (static graphics, PNGs, PSDs, AI files)
│ ├── fonts/ (local fonts scoped to this project)
│ └── documents/ (briefs, scripts, reference PDFs)
├── exports/
│ ├── drafts/ (work-in-progress renders)
│ └── final/ (delivered, approved renders)
└── README.md (auto-generated project notes)
Inside After Effects:
The tool also creates corresponding bins in the Project Panel to keep your workspace clean:
- _COMPS (containing your main composition)
- _FOOTAGE
- _ASSETS
- _AUDIO
3. The Mechanism
Dynamic Project Initialization
Instead of shipping a static pre-saved .aep binary file that locks you into a specific version, Aeset generates and saves the project directly through After Effects' ExtendScript engine (app.newProject() and app.project.save()). This guarantees 100% compatibility across all After Effects releases and hardware architectures.
The .jsx file
The tool generates a plain text ExtendScript file at runtime. This script has full programmatic access to After Effects. It uses the specs you provided in the terminal to build your composition, configure color management, and organize your project panel.
The AppleScript Trigger
The .jsx is triggered explicitly after After Effects opens using a macOS AppleScript command (DoScript). This bridges the gap between the Python-based CLI and the Adobe environment.
4. Constraints and Assumptions
- No Adobe credentials required: The tool uses only local scripting.
- After Effects must already be installed: The tool detects your installed AE application in
/Applications. - Local execution: All files are generated and stored locally on your machine.
5. Development & Testing
For guidelines on local testing, running automated test suites, manual verification, and the pre-release checklist, see the Developer Testing Guide.
Metadata
Release files for aeset 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aeset-0.2.1.tar.gz | 8.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aeset-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.0 kB
Release files / aeset-0.2.1.tar.gz
| Download URL | aeset-0.2.1.tar.gz |
|---|---|
| Size | 8.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
13d991297614c1249a0dee293e2f4845df923a19f736554c45fd575ae7f407d2
|
|
BLAKE2b-256 checksum How to use checksums |
f97c8ee50a196a44320b6479753c974942ab11c183670ae1cbdda81ae4a63a93
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Aug 18, 2026.
Transparency logRelease files / aeset-0.2.1-py3-none-any.whl
| Download URL | aeset-0.2.1-py3-none-any.whl |
|---|---|
| Size | 8.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f9fba2180631c88b653c293e3bf5d7e8b1426b8c41c855f19d3c1c222d3393f0
|
|
BLAKE2b-256 checksum How to use checksums |
65c1710c010e336886297de7019ddbea749c0c440035d51707203c0e493b5787
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Aug 18, 2026.
Transparency log