188 lines
11 KiB
Markdown
188 lines
11 KiB
Markdown
# Project Hygiene — Organize, Relink, ExtendScript
|
||||
|
|
|
|||
|
|
Keep AE projects organized, portable, and automatable: consistent naming, a clear folder/bin structure, label discipline, pre-comp discipline, reliable relinking when files move, and ExtendScript (.jsx) automation for repetitive tasks.
|
|||
|
|
|
|||
|
|
## Folder (bin) structure
|
|||
|
|
|
|||
|
|
Create folders in the Project panel (the folder icon at the bottom). A reliable layout:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
01_Comps/ finished/active compositions
|
|||
|
|
02_Precomps/ nested precomps
|
|||
|
|
03_Footage/ imported video
|
|||
|
|
04_Images/ stills, logos, textures
|
|||
|
|
05_Audio/
|
|||
|
|
06_Solids/ (AE's auto "Solids" folder — keep it here)
|
|||
|
|
07_Assets_3D/
|
|||
|
|
99_Old/ deprecated comps/layers, not deleted yet
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Numeric prefixes force a stable sort order. After importing, immediately drag items into the right bin — `File > Reduce Project` and `File > Consolidate All Footage` help later, but discipline up front prevents chaos.
|
|||
|
|
|
|||
|
|
## Naming conventions
|
|||
|
|
|
|||
|
|
- **Comps:** `PROJECT_section_descriptor_v01` (e.g., `BRAND_intro_logoBuild_v03`). Version with zero-padded `v01`, `v02`.
|
|||
|
|
- **Precomps:** prefix `PRE_` or suffix `_pre` so they're obvious in lists.
|
|||
|
|
- **Layers:** rename solids/nulls to their role (`CTRL_master`, `BG_gradient`, `MATTE_text`). Never ship "Black Solid 12".
|
|||
|
|
- **No spaces / special chars** in filenames destined for render farms or cross-OS sharing — use `_` and `-`.
|
|||
|
|
- Keep names short but unique; long names truncate in the timeline.
|
|||
|
|
|
|||
|
|
## Label colors
|
|||
|
|
|
|||
|
|
Use the Label color (the swatch left of each Project/Timeline item) as a visual system. Pick a convention and apply it consistently, e.g.:
|
|||
|
|
- Red = control/null layers
|
|||
|
|
- Blue = footage
|
|||
|
|
- Green = precomps
|
|||
|
|
- Yellow = text
|
|||
|
|
- Purple = adjustment/effects layers
|
|||
|
|
|
|||
|
|
Right-click an item → **Label** to set. Select multiple, then `Edit > Label > Select Label Group` to act on a whole color at once. Customize label names/colors in `Preferences > Labels`.
|
|||
|
|
|
|||
|
|
## Pre-comp discipline
|
|||
|
|
|
|||
|
|
- Pre-compose (`Layer > Pre-compose`, `Ctrl/Cmd+Shift+C`) to **group** related layers and to apply one effect to a group — not reflexively for everything.
|
|||
|
|
- When pre-composing a single layer, choose **"Leave all attributes in"** vs **"Move all attributes into the new composition"** deliberately: "Move" carries transforms/effects inside; "Leave" keeps them on the outer layer.
|
|||
|
|
- Name the precomp immediately and file it in `02_Precomps`.
|
|||
|
|
- Avoid deep nesting beyond a few levels — it slows navigation and makes relinking/debugging painful.
|
|||
|
|
- Match precomp duration and frame rate to need; an over-long precomp wastes cache.
|
|||
|
|
|
|||
|
|
## The "moved one file and everything broke" rescue
|
|||
|
|
|
|||
|
|
AE references footage by file path. Moving, renaming, or sending a project without its assets breaks links (shown as **colored bars / "Missing Footage"** placeholders).
|
|||
|
|
|
|||
|
|
### Fix options, in order
|
|||
|
|
1. **Relink one, fix many:** double-click a missing item (or right-click → **Replace Footage > File**). Point it at the moved file; AE offers to relink *all* missing items from the same folder automatically. This single step usually fixes the whole project.
|
|||
|
|
2. **Find Missing Footage:** `File > Dependencies > Find Missing Footage` lists every broken link to resolve.
|
|||
|
|
3. **Replace Footage:** right-click footage → **Replace Footage > File** to swap an asset while keeping every use, effect, and keyframe intact.
|
|||
|
|
|
|||
|
|
### Prevent it: Collect Files
|
|||
|
|
Before moving or sharing a project, use `File > Dependencies > Collect Files`. This copies the project plus every used asset into one new folder with relative structure, so links survive on any machine. Always hand off projects as a Collect Files package, not a bare `.aep`.
|
|||
|
|
|
|||
|
|
Related: `File > Dependencies > Consolidate All Footage` (merge duplicate imports), `Remove Unused Footage`, and `Reduce Project` (strip everything not used by selected comps) to slim a project before collecting.
|
|||
|
|
|
|||
|
|
## Batch automation with ExtendScript (.jsx)
|
|||
|
|
|
|||
|
|
AE scripts (ExtendScript / JSX) automate repetitive work. Run via `File > Scripts > Run Script File...`, or place in the **ScriptUI Panels** folder to dock as a panel. Always wrap edits in `app.beginUndoGroup("name") ... app.endUndoGroup()` so one Undo reverts the whole batch.
|
|||
|
|
|
|||
|
|
Common automations (full code in `../scripts/`):
|
|||
|
|
- **Batch rename** selected layers with a base name + auto-increment (`../scripts/batch-rename.jsx`).
|
|||
|
|
- **Sequential offset** — stagger selected layers in time by N frames each, a staggered "domino" start (`../scripts/sequential-offset.jsx`).
|
|||
|
|
- **Apply an effect** (e.g., a Gaussian Blur, or any matchName) across all selected layers at once (`../scripts/apply-effect-to-layers.jsx`).
|
|||
|
|
|
|||
|
|
Minimal pattern:
|
|||
|
|
```javascript
|
|||
|
|
app.beginUndoGroup("My Batch Op");
|
|||
|
|
var comp = app.project.activeItem;
|
|||
|
|
if (comp && comp instanceof CompItem) {
|
|||
|
|
var sel = comp.selectedLayers;
|
|||
|
|
for (var i = 0; i < sel.length; i++) {
|
|||
|
|
// operate on sel[i]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
app.endUndoGroup();
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Quick reference
|
|||
|
|
|
|||
|
|
| Task | How |
|
|||
|
|
|---|---|
|
|||
|
|
| New bin | Folder icon at bottom of Project panel |
|
|||
|
|
| Set label color | Right-click item → Label |
|
|||
|
|
| Relink missing footage | Double-click item / Replace Footage > File |
|
|||
|
|
| List broken links | File > Dependencies > Find Missing Footage |
|
|||
|
|
| Package for handoff | File > Dependencies > Collect Files |
|
|||
|
|
| Swap an asset everywhere | Replace Footage > File |
|
|||
|
|
| Slim project | Reduce Project / Remove Unused Footage |
|
|||
|
|
| Run a script | File > Scripts > Run Script File... |
|
|||
|
|
| Pre-compose | Layer > Pre-compose (Ctrl/Cmd+Shift+C) |
|
|||
|
|
|
|||
|
|
## Gotchas
|
|||
|
|
|
|||
|
|
- **Collect Files before moving anything.** Moving the `.aep` alone always breaks links.
|
|||
|
|
- **Relinking one item often relinks the rest** from the same folder — try that before fixing each by hand.
|
|||
|
|
- **Replace Footage preserves effects/keyframes;** deleting + re-importing does not.
|
|||
|
|
- **AE auto-creates a "Solids" folder** — don't scatter solids elsewhere or it regenerates duplicates.
|
|||
|
|
- **Scripts need `app.beginUndoGroup`/`endUndoGroup`** or a batch becomes many separate undos.
|
|||
|
|
- **Applying effects by name needs the `matchName`,** not the display name (e.g., `"ADBE Gaussian Blur 2"`), to be reliable across AE language versions.
|
|||
|
|
- **Allow Scripts to Write Files** must be enabled in `Preferences > Scripting & Expressions` for scripts that save/render.
|
|||
|
|
- **Deep precomp nesting** makes both performance and relinking worse — keep it shallow.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# AE Project Organization — Detailed Reference
|
|||
|
|
|
|||
|
|
## Full folder (bin) template
|
|||
|
|
```
|
|||
|
|
PROJECT.aep
|
|||
|
|
├── 00_Output/ (final renders live next to project on disk)
|
|||
|
|
01_Comps/ master & active comps
|
|||
|
|
02_Precomps/ nested precomps (prefix PRE_)
|
|||
|
|
03_Footage/ video clips
|
|||
|
|
04_Images/ stills, logos, vector, textures
|
|||
|
|
05_Audio/ music, VO, SFX
|
|||
|
|
06_Solids/ AE auto-folder; leave it here
|
|||
|
|
07_Assets_3D/ OBJ/C4D/3D model assets
|
|||
|
|
08_Reference/ storyboards, briefs, temp ref
|
|||
|
|
99_Old/ deprecated, kept until final
|
|||
|
|
```
|
|||
|
|
Numeric prefixes lock sort order. Keep the on-disk asset folders mirroring these bins so Collect Files stays clean.
|
|||
|
|
|
|||
|
|
## Naming scheme
|
|||
|
|
| Item | Pattern | Example |
|
|||
|
|
|---|---|---|
|
|||
|
|
| Master comp | `PROJ_section_v##` | `BRAND_main_v04` |
|
|||
|
|
| Sub/shot comp | `PROJ_section_shot_v##` | `BRAND_intro_logo_v02` |
|
|||
|
|
| Precomp | `PRE_descriptor` | `PRE_textReveal` |
|
|||
|
|
| Null/control | `CTRL_role` | `CTRL_master` |
|
|||
|
|
| Solid/BG | `BG_role` | `BG_gradient` |
|
|||
|
|
| Matte | `MATTE_role` | `MATTE_logoTrack` |
|
|||
|
|
| Adjustment | `ADJ_role` | `ADJ_grade` |
|
|||
|
|
|
|||
|
|
Rules: zero-pad versions; no spaces/special characters for farm/cross-OS safety; keep unique and short.
|
|||
|
|
|
|||
|
|
## Label color system (example)
|
|||
|
|
| Color | Meaning |
|
|||
|
|
|---|---|
|
|||
|
|
| Red | Control / null layers |
|
|||
|
|
| Blue | Footage |
|
|||
|
|
| Green | Precomps |
|
|||
|
|
| Yellow | Text |
|
|||
|
|
| Purple | Adjustment / effects |
|
|||
|
|
| Orange | Audio |
|
|||
|
|
| Gray | Disabled / old |
|
|||
|
|
|
|||
|
|
Set via right-click → Label. Customize names/colors in `Preferences > Labels`. Use `Edit > Label > Select Label Group` to select everything of one color.
|
|||
|
|
|
|||
|
|
## Relink / missing footage — full workflow
|
|||
|
|
1. **Identify:** missing items show as colored bars with "Missing" placeholders; the Project panel marks them.
|
|||
|
|
2. **Relink one to fix many:** right-click a missing item → **Replace Footage > File** (or double-click it). Choose the relocated file. AE prompts to relink all other missing files found in the same folder — accept to fix the batch at once.
|
|||
|
|
3. **Enumerate:** `File > Dependencies > Find Missing Footage`, `Find Missing Fonts`, `Find Missing Effects` to locate every broken dependency.
|
|||
|
|
4. **Swap assets:** **Replace Footage > File** swaps the source while preserving all layer instances, effects, masks, and keyframes.
|
|||
|
|
|
|||
|
|
## Collect Files (portable handoff)
|
|||
|
|
- `File > Dependencies > Collect Files`.
|
|||
|
|
- Options: Collect Source Files = **All**; enable **Reduce Project** to drop unused; optionally **Generate Report**.
|
|||
|
|
- Produces a folder containing the `.aep` plus a `(Footage)` subfolder with every used asset, preserving relative links so the project opens anywhere.
|
|||
|
|
- Always deliver/move projects as a Collect Files package, never a lone `.aep`.
|
|||
|
|
|
|||
|
|
## Slimming a project
|
|||
|
|
- `File > Reduce Project` — removes all items not used by the currently selected comp(s). Destructive to unused items; save first.
|
|||
|
|
- `File > Dependencies > Consolidate All Footage` — merges duplicate imports of the same file.
|
|||
|
|
- `File > Dependencies > Remove Unused Footage` — drops footage no comp references.
|
|||
|
|
- Run these before Collect Files to keep the package small.
|
|||
|
|
|
|||
|
|
## Scripting setup
|
|||
|
|
- Enable `Preferences > Scripting & Expressions > Allow Scripts to Write Files and Access Network` for scripts that save or render.
|
|||
|
|
- Run a script: `File > Scripts > Run Script File...`.
|
|||
|
|
- Dock a panel script: place the `.jsx` in `(AE install)/Scripts/ScriptUI Panels/`, restart AE, open from the `Window` menu.
|
|||
|
|
- Wrap every batch in `app.beginUndoGroup("...")` / `app.endUndoGroup()` so it undoes in one step.
|
|||
|
|
- Apply effects by **matchName** (internal id like `"ADBE Gaussian Blur 2"`), not the localized display name, for cross-version reliability. Use `layer.property("ADBE Effect Parade").addProperty(matchName)`.
|
|||
|
|
|
|||
|
|
## Pre-comp discipline details
|
|||
|
|
- "Leave all attributes in the new composition" keeps the outer layer's transform; "Move all attributes" pushes them inside the precomp. Choosing wrong shifts/rescales the result.
|
|||
|
|
- Trim precomp duration to the content; over-long precomps waste RAM/disk cache.
|
|||
|
|
- Name and file precomps immediately; never leave "Pre-comp 1".
|
|||
|
|
- Keep nesting shallow (2–3 levels) for performance and easier relinking/debugging.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
Keep the project tidy and named well and footage relinks without a fight. Built by **[iart.ai](https://iart.ai/?utm_source=github&utm_medium=readme&utm_campaign=motion-design-skills&utm_content=skill_footer&utm_term=after-effects)** — the AI motion agent for editable, on-brand motion graphics.
|