solomondivyananth/aftereffects-mcp

ae-ai-templates

Use and write AI-native After Effects templates through the AE MCP Bridge - finished animated designs (lower third, kinetic title, word reveal, app card, bar chart, logo sting, welcome) that an agent fills from a brief with aetemplate, built as one undo ste…

查看源码

使用方法

  1. 复制安装命令,在自己的智能体环境安装前先检查源码包。
  2. 从原始文档核对所需工具、凭据和支持的宿主。
  3. 说明输入材料与期望交付物,并对照来源检查输出。
npx skills add https://github.com/solomondivyananth/aftereffects-mcp --skill ae-ai-templates

开始前需了解

  • 安装不包含模型订阅、API 额度或访问文件的权限。
  • 仓库星数和安装量反映活跃情况,不等于独立质量或安全测试。
仓库原始内容

按源仓库内容呈现,保留标题、案例、代码、表格、链接以及原文引用的演示图片。

AI-native templates

A template here isn't an .aep someone opens and edits. It's a recipe: typed slots (text with length limits, colours, lists, options) plus the bridge steps that build the design. An agent fills the slots from a brief, and the whole design builds in one call. Every build still gets a Controls layer and Essential Graphics controls, so a person can adjust it afterwards.

Using one

json
ae_template {"action": "list"}
ae_template {"action": "describe", "template": "lower-third"}
ae_template {"action": "build", "template": "lower-third", "format": "9x16",
             "values": {"name": "Priya Raman", "title": "Founder, Loop Studio", "accent": "#ff7a3d"}}
  • Read `describe` first. Every slot has a type, a default, limits and a

one-line describe. Text over its maxChars is refused with the exact count: shorten it, don't ask to squeeze it in. The limit is where the design stops fitting.

  • Build. It's one undo step (MCP: Template · …), and on any failure

the whole build is rolled back, so nothing is left half-made. The result includes a contact sheet. Look at it before saying it's done.

  • Proof it. ae_proof {"comp": "…"} on the built comp catches copy that

collides or runs off the edge in a format you didn't look at closely (ae-motion-proof).

  • Formats. Pass format for social cuts. Layouts adapt; they aren't

just cropped.

  • Change it later. Rebuild with new values (the fastest and cleanest

way), or edit the Essential Graphics controls or the Controls layer.

  • Then deliver with ae-deliver: pre-flight, render, verify.
TemplateForKey slots
lower-thirdnames and titles over footagename, title, accent, theme, backdrop
kinetic-titlestomp typography on a beatwords (list), beat, accent, font, shake
word-revealcalm premium title on a drifting gradientheadline, sub, accent, accent2
app-cardapp or AI launch shot, 3D UI panelgreeting, prompt, chips (list), accent
bar-chartanimated datatitle, items [{label, value}], unit, accent
logo-stingbrand sting with rings and a flarewordmark, tagline, accent, accent2
welcomethe bridge's own welcome (also ae_welcome)accent, font

ae_welcome builds the welcome template and opens it. It's also the quickest way to prove a new install works end to end.

When a build fails

A build runs inside one ae_batch with atomic: true, so a failure leaves the project exactly as it was — there is never a half-made comp to clean up. Read the error, which names the step:

ErrorMeansDo
"… is N characters, the limit is M"the copy is longer than the design holdsshorten it; the limit is where the layout breaks, not a suggestion
"… is not a slot"a typo, or a slot from another templatedescribe the template and use its names
"unknown name X in expression"the template's own JSON is wrongfix the template, not the call
A step fails on a property pathAfter Effects renamed something, or a property is hiddenread the real path back with ae_layer_detail
The build succeeds but expressionErrors is not emptyan expression in the template brokefix the template and rebuild; do not ship it

Choosing and filling from a brief

  1. Pick the template whose purpose matches the brief, not its look.

The look is controlled through the slots.

  1. Map the brief's content onto slots. Keep the copy within the limits.

Split long lines into the template's list slots where it has them.

  1. Use the brand's colours as hex. If the brief gives none, keep the

defaults.

  1. Fonts: slots take a PostScript name, and the font must be installed.

Look it up with ae_catalog {"kind": "fonts", "query": "…"} rather than guessing.

  1. Build, look at the contact sheet, and adjust values and rebuild if the

copy wraps oddly or colours clash.

Writing a new template

A template is templates/<name>.json:

json
{
  "name": "quote-card", "title": "Quote Card",
  "description": "What it is for and what it looks like, for the agent choosing one.",
  "formats": ["16x9", "9x16", "1x1"],
  "duration": 6, "fps": 30,
  "slots": {
    "quote": { "type": "text", "default": "…", "maxChars": 120, "required": true, "describe": "…" },
    "accent": { "type": "color", "default": "#7a5cff", "describe": "…" }
  },
  "steps": [
    { "let": { "size": "{{Math.min(64 * S, W * 0.8 / (quote.length * 0.4))}}" } },
    { "tool": "ae_create_comp", "args": { "name": "{{comp}}", "width": "{{W}}", "height": "{{H}}", "duration": "{{dur}}", "frameRate": "{{fps}}" } },
    { "tool": "ae_create_layer", "args": { "comp": "{{comp}}", "kind": "text", "options": { "name": "Quote", "text": "{{quote}}", "style": { "fontSize": "{{size}}" } } } }
  ]
}

Slots: text (maxChars, required), color (hex), number (min, max), enum (values), bool, list (item "text" with maxChars, or an object of fields; minItems, maxItems). Every slot needs a default and a describe.

Steps are bridge tool calls, run in order inside one ae_batch:

  • "{{expr}}" as a whole value gives a typed result (number, array); inside

a longer string it's inserted as text.

  • {"let": {...}} defines names for later steps.
  • {"when": "expr", ...} skips a step when false.
  • {"repeat": {"over": "list", "as": "item", "index": "i"}, "steps": [...]}

loops.

  • duration may be an expression, e.g. "(len(words) * beat + hold) / fps".

Names available in expressions: every slot, data entries, comp, W, H, fps, dur, cx, cy, S (scale, 1 at 1080), portrait, format, toolCount, skillCount, Math, and the helpers len(x), max(list, key), pick(list, i), upper(s), fixed(n, d). Expressions are arithmetic, comparisons, ?: and calls. There are no assignments and no {} objects; for alternatives, write two steps with when. Slot values are data, never code.

Rules that keep templates solid (each one was learned by breaking it):

  • Put a Controls null first, and drive colours from it with

expressions, so one Essential Graphics control recolours everything.

  • Size text from its length and the frame

(Math.min(base * S, W * k / (text.length * 0.55))) so any copy up to maxChars fits in every format.

  • Blurred colour fields: blur on an adjustment layer above the shapes.

Effects on a shape layer are clipped to the shape's bounds.

  • 3D children: parent while 2D, then make the layer 3D, or it gets a

counter-rotation and leaves the parent's plane.

  • After a range selector switches Units to index, address its Start and

End by matchName (ADBE Text Index Start, ADBE Text Index End). The percent versions still exist, hidden.

  • Unique layer names within a template: every step finds layers by name.
  • Give every template a background layer for its full length. Otherwise

previews show a transparent (white) frame.

  • Name all copy neutrally. Defaults are placeholders, never a real

person's or brand's text.

Designing the slots

The slots are the whole interface. Get them wrong and the template is either rigid or unusable.

  • One slot per decision a person actually makes. A brief says a name, a

title and a brand colour — not a font size, a Y position and an ease.

  • Set `maxChars` by measuring, not guessing. Build the template with

filler text, lengthen it until the layout breaks, then set the limit a few characters below that. Write the number down in describe.

  • Defaults must be shippable. Someone will build with no values at all;

the result should look designed, with neutral placeholder copy — never a real person's or brand's text.

  • Lists need `minItems` and `maxItems`. Three chips look deliberate;

eleven overflow. Say so in describe.

  • Enums beat numbers for anything with a house style: `theme: light |

dark, not backgroundLightness: 0–100`.

  • Formats adapt, they do not crop. In portrait, stack what was side by

side, raise type sizes relative to width, and move the content off the bottom fifth where the platform UI sits.

Building a new one, end to end

  1. Sketch it as a comp by hand first, with the real tool calls, in a scratch

project. Get it looking right before it becomes JSON.

  1. Turn the calls into steps, replacing the hard-coded values with slots

and expressions.

  1. npm test — it expands every template with its defaults in every format.
  2. Build it live in each format, with the longest copy its slots allow.
  3. Look at every contact sheet, and run ae_proof on each build.
  4. Add it to the table above and to the README's count.

Validate: npm test expands every template with its defaults in every format and fails on unknown names, unknown tools, NaN, or leftover {{. Then build it live (ae_template build) in a scratch project, look at the contact sheet in each format, run ae_proof on each one, and fix what you see. A template is not done until it proofs clean with the longest copy its slots allow.

按任务相关推荐

来自同一仓库

更多 Skills

全部 Skills
solomondivyananth
社区

ae-camera-3d

Cameras and 3D scenes in After Effects through the AE MCP Bridge - 3D layers and depth, camera rigs on nulls (dolly, orbit, push-in, parallax), depth of field, lights and shadows, materials, choosing the 3D renderer, 3D models, camera shake, and what the 3D camera tracker needs a person for. Use when asked for a camera move, parallax, depth, a 3D scene or extrusion, lighting, shadows, bokeh, or when layers should feel like they sit in space.

安装量
1
GitHub Stars
68
最近更新
10月5日
solomondivyananth
社区

ae-composition

Stage a frame in After Effects through the AE MCP Bridge - give every beat one dominant element, build scale hierarchy, use the whole frame instead of a band in the middle, vary the composition between beats, place things on a grid with real margins, crop and bleed deliberately, compose for 9x16 and 1x1, and check it with aeproof's staging checks. Use when work looks flat, generic, empty, "like a slide", "like a wireframe" or "not designed", when every beat looks the same, when nothing on screen

安装量
1
GitHub Stars
68
最近更新
10月5日
solomondivyananth
社区

ae-effects

Special effects, blur and motion blur in After Effects through the AE MCP Bridge - glows, light rays and flares, fractal noise, displacement and distortion, particles, chromatic split, grain, stylized looks, paper and print finishes, stepped on-twos cadence, effects driven by map layers, and every kind of blur (Gaussian, directional, radial, lens blur, pixel motion blur, comp motion blur), with exact effect and parameter names. Use when asked for a look or an effect (glow, energy, glitch, heat h

安装量
1
GitHub Stars
68
最近更新
10月5日
solomondivyananth
社区

ae-motion-proof

Proof-read motion in After Effects through the AE MCP Bridge - screen a comp with aeproof for overlapping or clipped elements, jitter, flicker, one-frame pops, keyframes off the frame grid, linear easing, text too small or too brief to read, uneven staggers, missing motion blur on fast moves, broken expressions, a solo switch left on or an empty first frame, plus staging checks for a beat with no focal point, no scale hierarchy or an unused frame, then verify each finding on a rendered frame. Us

安装量
1
GitHub Stars
68
最近更新
10月5日