Repository navigation
Precision tools
Exact control over timing, easing, layout, files and stills, in numbers rather than looks. Ask for it in plain
words ("put these keys on whole frames", "copy the ease of the logo's last key to the three titles", "align these
to the left edge of the title"); the AI uses these tools. They are on demand: in the core tool set the AI reaches
them through ae_tools / ae_call (see What the AI can do).
Every edit is one undo step and returns a change report, as with every other tool.
| Tool | What it does |
|---|---|
ae_get_keyframes |
Reads the keys of many layers and properties as a table. Each key has its whole frame and exact time, the value, the interpolation, and its ease exactly as After Effects stores it (speed in the property's units per second, influence in %). Keys that sit between frames are flagged (offFrame), never rounded silently. curves: true adds the normalised curve of each segment (as cubic-bezier numbers). |
ae_set_keyframe_table |
Writes such a table back, many properties in one undo step. A wrong number of ease values, an influence outside 0.1–100, two keys on one frame, or roving on a first or last key are refused before anything is written. |
ae_set_keyframes, ae_edit_keyframes, ae_remove_keyframes, ae_copy_keyframes and ae_get_layer_bounds also
take whole frames instead of seconds, and ae_set_keyframes takes one ease per dimension.
Ease counts. A spatial property (Position, Anchor Point) has one ease per key side, along the motion path. Other properties have one per dimension: Scale has three, Opacity one. After Effects reports influence 0 on a side no segment uses (a key set to Bezier without an explicit ease); Surehand writes such a value as 0.1, After Effects' minimum.
| Tool | What it does |
|---|---|
ae_copy_ease |
Copies the ease of one reference key to many keys and layers. Same number of ease values: per dimension. A reference with one: to every dimension. Otherwise name the reference dimension (sourceDimension). Speed is in each property's own units, so choose copy, keep (copy only the influence) or zero. |
ae_audit_easing |
Read-only. Finds a comp's own most-used curves (overall and per property type) and lists the segments that match none, with layer, frames, the exact ease and the nearest norm. Useful to check a motion system's consistency, not to impose a style. |
ae_retime_keyframes has four modes; every key lands on a whole frame:
-
scale: stretch or compress timing around the first key, the last key or a given frame (
factor, or a target duration in frames). Speeds are scaled so each curve keeps its shape. - offset: shift keys (or whole layers) by N frames.
- stagger: layer i moves by i × N frames, in the order you give.
- conform: change the comp's frame rate and put keys and layer timing on the new frames. It reports what was rounded and by how much.
Keys that would land on the same frame are refused before anything changes.
ae_align_layers aligns (left, right, top, bottom, centres), distributes with equal gaps, or centres in the comp,
using the layers' measured on-screen bounds: through scale, rotation and parenting, with text measured by its
glyphs. It is not based on anchor points. It measures again after moving and reports any error left (normally 0).
dryRun: true only reports the moves. 3D layers (or layers with a 3D parent), locked layers and expression-driven
positions are left alone, with the reason.
| Tool | What it does |
|---|---|
ae_find_files |
Finds files on disk (no After Effects needed): ~, globs such as **/*.{mov,mp4}, names with accents in either Unicode form, depth and result limits. It never follows a folder twice. |
ae_export_frames |
Full-resolution PNG stills of comps, of chosen layers only, or of footage, several per call (frame lists or ranges, [####] numbering). Works whatever the comp's preview resolution; leaves no undo step. An existing file is never replaced unless you ask (overwrite: true). |
ae_import_files reports, per file, when After Effects rejected the requested import as (for example a PNG as a
comp) and what it imported instead; strictImportAs: true refuses the whole import instead.
On After Effects 2025 and 2026, macOS and Windows 11. 3D layers aren't aligned yet (screen position needs depth).
Start here
Using Surehand
- The Surehand panel
- Approvals
- What the AI can do
- Precision tools
- Checkpoints
- Proven edits
- Project history
- Project X-ray
- Precomp surgery
- Preflight
- Stress test
- Versions, localization and reformat
- Rendering
- Render speed, handoff and farms
- Chat in After Effects
- In-chat views
Reference
Developers