PyShiftAE
Python for After Effects! PyShiftAE is an Open Source .aex plugin designed to serve as a full replacement for After Effects Extendscript.
Install / Use
/learn @Trentonom0r3/PyShiftAEREADME
PyShiftAE - Python for After Effects!
Table of Contents:
Join the Official PyShiftAE Discord!
- Check it out here!
Introduction
<p>ExtendScript, the established scripting language in AE, poses certain limitations particularly around sophisticated tasks such as pixel or audio data manipulation, as well as certain automation tasks.<p> <p>Its capabilities are somewhat confined, often demanding a transition to the more complex C++ SDK for advanced functionalities, or packaging 3rd party node modules or python venvs to achieve the functionality you truly want.<p>
-
PyShiftAE is an experimental, Open Source library designed to transcend the boundaries of the built-in ExtendScript library in Adobe After Effects (AE), heralding a new era of scripting possibilities in AE.
-
By offering a Python library as an alternative to ExtendScript, PyShiftAE not only enriches the existing feature set but simplifies and amplifies the scripting experience. PyShiftAE is NOT a wrapper around extendscript. Instead, it is a python library written around the c++ SDK.
-
PyShiftAE not only allows scripting of AE through python, but integration of most (if not all) external python libraries, provided you have the installed.
As ways to script shapes/masks/text et alia are implemented, this will open doors to python data-driven animation within AE, utilization of various ML and AI libraries, and much, much more.
Problem Statement:
ExtendScript, the established scripting language in AE, poses certain limitations particularly around sophisticated tasks such as pixel or audio data manipulation. Its capabilities are somewhat confined, often demanding a transition to the more complex C++ SDK for advanced functionalities.
Why PyShiftAE?:
- Ease of Use: Python, being a more intuitive and widely adopted language compared to ExtendScript, lowers the entry barrier for scriptwriters.
- Extended Functionality: PyShiftAE is not a mere wrapper around ExtendScript; it's a full-fledged library offering novel functionalities and a simplified approach to existing ones.
- Community Empowerment: With PyShiftAE, a broader spectrum of developers including CEP developers and those proficient in Python can effortlessly script in AE, thus democratizing advanced scripting capabilities.
- Innovation Unleashed: Direct integration with APIs, machine learning libraries, and more becomes a reality with PyShiftAE, paving the way for innovative scripts and extensions.
Impact:
The ripple effect of PyShiftAE in the AE community could be profound. Scriptwriters could venture into more advanced coding territories, and CEP extension authors could craft hybrid extensions blending SDK features via PyShiftAE, thereby catalyzing a wave of innovative solutions in the AE ecosystem.
Requirements:
To Use PyShiftAE, you must have the following core dependencies installed;
- Windows 10/11, x64 build
- Python 3.1X
- After Effects 2023 or above.
Installation
1. Check Your Python Version
- Make sure you have Python 3.1x installed (e.g., Python 3.11 or 3.12).
- To verify, open a terminal and run:
orpython --versionpython3 --version - The output should show a Python version in the 3.1x range.
- To verify, open a terminal and run:
2. Obtain the Matching Wheel
- Download the latest
.whlfile for your Python version (e.g.,cp311for Python 3.11). - Keep in mind that PyShiftAE will use whichever Python interpreter is first in your system
PATH.
3. Install the Wheel
- Open a terminal in the same folder where you saved the
.whl. - Install with pip:
pip install pyshiftae-0.1.1-cp311-cp311-win_amd64.whl
4. Install the Plugin
- Open a new python terminal.
- Run the command:
psc-install
- Paste the proper Effects Directory into the input. Voila!
- Restart AE.
Changelog:
All Updates should be assumed to come with updated documentation, and an updated binary .aex file located in dist, unless otherwise specified.
ChangeLog will contain a brief description of changes. See Wiki API docs for more info.
-
[12.22.24]
- I'm baaaaaaaaack!
- Reworked PyShiftAE.
- Closer to metal
- lower latency
- broader api
- simpler api
- much, much moore.
- Reset version to
0.1.0. - NOTE: Docs are NOT updated as of yet. See the Python folder for the new API for now.
-
[1.29.24]
- Updated Documentation, release
PyShiftAE 1.0.1 - Release
pypiproject.pip install PyShiftAE - Include Docs for
CEPyextensions
- Updated Documentation, release
-
[1.28.24]
- Ability to write full python GUI extensions! (Docs coming soon)
- Ability to control AE from ANY python process!
- Slight Refactorings, deletions, and changes.
- TODO: Refactor further, finalize API transfer to
.pyd, and fully test extension and python process communication.
-
[1.24.24]
- Various small changes and refactorings.
- Compatible with python
3.1xand up. - If using a previous version, please delete, clear AE cache, and then reinstall the new .aex binary.
- Removed JS communication (will replace later).
- Cleaned up plugin main entry.
- Added submodule for external python library [WiP].
-
[12.22.23]
- Added
replacemethod toFootageItem. - Created
PSC.exeto help installPyShiftAEin the correct location, with the correct python version. Find this in/dist/.
- Added
-
[12.21.23]
- Massive Overhaul and Feature Updates. Slight API doc changes.
- Included a Debug Console, found under
Window->Python Console. - Added to the CEPy-Resources Repo
- See this repo for how to run PyShiftAE from CEP extensions, and instructions for setup.
- Fixed issues with using iterator, fixed some memory and pointer issues.
- Added
layer.source, use to get source Item, which is used to alter/change source item. - Added
selectedLayer(s)toCompItemclass, shows you which layers are selected. - Added
selectedItemstoProjectclass. - Added
activeLayertoProject. - Added
selectedboolean attribute toItembase class. - Added a
build.pyscript to help user generate the boilerplate forCEPintegration.- Again, see the CEPy-Resources Repo.
-
[11.29.23]
-
Added
ProjectCollectionandItemCollectionclasses, similar toLayerCollection -
Updated API Reference with some more detailed information.
-
Added constructor to
FolderItem. -
Removed Item creation methods from
Projectclass in favor of constructor usage. -
Demonstration of recursive searching through
ProjectCollectionandFolderItemusing a pythonic interace:from PyShiftCore import * NAME = "NAME" PATH = "PATH" project = app.project items = project.items new_folder = FolderItem(NAME) # create a new folder item new_footage = FootageItem(NAME, PATH) # create a new footage item new_folder.children.append(new_footage) # add the footage item to the folder item for item in items: # loop through all items in the project if isinstance(item, FolderItem): # check if the item is a folder if item.name != "PyShiftAE": # check if the folder is not the PyShiftAE folder item.children.append(new_folder) # add the new folder to the folder we found else: app.reportInfo(item.name) # report the name of the item for item in items: # loop through all items in the project if isinstance(item, FolderItem): # check if the item is a folder app.reportInfo("Folder Found!:" + item.name) # report the name of the folder children = item.children # get the children of the folder app.reportInfo("Looking for Child Items!") # report that we are looking for child items for child in children: # loop through all the children app.reportInfo("Child Found!:" + child.name) # report the name of the child if isinstance(child, FolderItem): # check if the child is a folder app.reportInfo("Child is Folder!:" + child.name) # report that the child is a folder children2 = child.children # get the children of the child for child2 in children2: # loop through all the children of the child app.reportInfo("Child Folder Child Item:" + child2.name) # report the name of the child of the child
-
-
[11.28.23 [Pt.2]]
- Adjusted
LayerCollectionto have getter/setter methods, access as you normally would lists. - Removed
addLayerandaddSolidfromCompItemin favor of list manipulation. - Started on python stub files
.pyi, contained underPyShiftCore.pyi. -
Added
SolidItemclass.from PyShiftCore import * NAME = "NAME" WIDTH = 1920 HEIGHT = 1080 RED = 0.55 # Floating Point in range [0.00, 1.00] GREEN = 0.22 # Floating Point in range [0.00, 1.00] BLUE = 0.10 # Floating Point in range [0.00, 1.00] ALPHA = 1.0 # Floating Point in range [0.00, 1.00] DURATION = 10.0 # Floating Point in range [0.00, 1.00] solid = SolidItem(NAME, WIDTH, HEIGHT,
- Adjusted
Related Skills
claude-opus-4-5-migration
106.4kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
model-usage
345.9kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
TrendRadar
50.6k⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。
mcp-for-beginners
15.8kThis open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable, and secure AI workflows from session setup to service orchestration.
