@dnyantra/dtly 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -6
- package/dist/agents.d.ts +8 -0
- package/dist/agents.js +67 -0
- package/dist/agents.js.map +1 -0
- package/dist/cli.js +13 -7
- package/dist/cli.js.map +1 -1
- package/dist/mcp/server.js +8 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/plugin/skills/moti/SKILL.md +178 -0
- package/plugin/skills/dtly/SKILL.md +0 -94
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ they make.
|
|
|
17
17
|
- **Presets** — kinetic typography, logo openers, colour-bar openers, slideshows with Ken Burns, push/whip/wipe/zoom transitions, lower thirds, highlight plates. Presets write ordinary layers, so everything stays editable.
|
|
18
18
|
- **Media** — video, image and audio layers, volume keyframes, music mixing.
|
|
19
19
|
- **Studio** — a browser preview and After Effects-style timeline editor that stays in sync with agents.
|
|
20
|
-
- **Agent-native** — 23 MCP tools plus a skill that
|
|
20
|
+
- **Agent-native** — 23 MCP tools plus **moti**, a skill that turns your agent into a motion designer.
|
|
21
21
|
- **No browser, no lock-in** — renders with skia-canvas and FFmpeg. MIT licensed.
|
|
22
22
|
|
|
23
23
|
## Install
|
|
@@ -37,7 +37,7 @@ npx @dnyantra/dtly render hello.json hello.mp4
|
|
|
37
37
|
|
|
38
38
|
### Use it from Claude Code
|
|
39
39
|
|
|
40
|
-
Install the plugin (MCP server + skill) in one step:
|
|
40
|
+
Install the plugin (MCP server + the **moti** skill) in one step:
|
|
41
41
|
|
|
42
42
|
```
|
|
43
43
|
/plugin install dtly --marketplace dnyantra/dtly
|
|
@@ -47,10 +47,32 @@ Or add the pieces yourself:
|
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
49
|
claude mcp add --scope user dtly -- npx -y @dnyantra/dtly mcp
|
|
50
|
-
npx @dnyantra/dtly skill install
|
|
50
|
+
npx @dnyantra/dtly skill install --agent claude
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
### Use it from Codex, Cursor, Gemini CLI, Copilot or Windsurf
|
|
54
|
+
|
|
55
|
+
The **moti** skill uses the open [Agent Skills](https://agentskills.io) format, so one command installs
|
|
56
|
+
it for every supported agent:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx skills add dnyantra/dtly # or: npx @dnyantra/dtly skill install --agent all
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Then add the MCP server (the editing tools) to your agent:
|
|
63
|
+
|
|
64
|
+
| Agent | Setup |
|
|
65
|
+
|---|---|
|
|
66
|
+
| Codex | `codex mcp add dtly -- npx -y @dnyantra/dtly mcp` |
|
|
67
|
+
| Cursor | `~/.cursor/mcp.json` → `{"mcpServers": {"dtly": {"command": "npx", "args": ["-y", "@dnyantra/dtly", "mcp"]}}}` |
|
|
68
|
+
| Gemini CLI | `~/.gemini/settings.json` → same `mcpServers` block as Cursor |
|
|
69
|
+
| VS Code + Copilot | `.vscode/mcp.json` → `{"servers": {"dtly": {"type": "stdio", "command": "npx", "args": ["-y", "@dnyantra/dtly", "mcp"]}}}` |
|
|
70
|
+
| Windsurf | `~/.codeium/windsurf/mcp_config.json` → same `mcpServers` block as Cursor |
|
|
71
|
+
|
|
72
|
+
`npx @dnyantra/dtly setup <agent>` prints these steps for your agent. Agents without MCP can still use
|
|
73
|
+
DT.ly through the skill's CLI fallback (`init`, `still`, `sheet`, `render`).
|
|
74
|
+
|
|
75
|
+
Then ask for things like `/moti make a 10 second kinetic typography opener for my bakery` or
|
|
54
76
|
*"ease the call-to-action in with a spring and move it 0.3 s later"*.
|
|
55
77
|
|
|
56
78
|
## Studio — browser preview and timeline editor
|
|
@@ -99,7 +121,8 @@ dtly sheet <project.json> <out.png> <t1,t2,...>
|
|
|
99
121
|
dtly studio <project.json> [--port 4400] [--no-open]
|
|
100
122
|
dtly presets
|
|
101
123
|
dtly mcp
|
|
102
|
-
dtly
|
|
124
|
+
dtly setup <claude|codex|cursor|gemini|copilot|windsurf>
|
|
125
|
+
dtly skill install [--agent claude|codex|cursor|gemini|copilot|all] [--project] [--dir path]
|
|
103
126
|
```
|
|
104
127
|
|
|
105
128
|
## Library
|
|
@@ -142,7 +165,7 @@ Installing the package also gives you the `dtly` command.
|
|
|
142
165
|
| Motion blur | `motionBlur: {samples, shutter}` |
|
|
143
166
|
|
|
144
167
|
Layer index 0 is the top of the stack, as in After Effects. See
|
|
145
|
-
[`plugin/skills/
|
|
168
|
+
[`plugin/skills/moti/SKILL.md`](plugin/skills/moti/SKILL.md) for the full guide.
|
|
146
169
|
|
|
147
170
|
## Development
|
|
148
171
|
|
package/dist/agents.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const skillTargets: (agent: string, project: boolean) => string[];
|
|
2
|
+
export declare const SKILL_NAME = "moti";
|
|
3
|
+
export declare const installSkill: (pkgRoot: string, dirs: string[]) => string[];
|
|
4
|
+
export declare const MCP_SETUP: Record<string, {
|
|
5
|
+
file: string;
|
|
6
|
+
text: string;
|
|
7
|
+
}>;
|
|
8
|
+
export declare const setupGuide: (agent: string) => string;
|
package/dist/agents.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Setup helpers for AI coding agents: where the DT.ly skill goes and how each agent adds the MCP server.
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
const PKG = '@dnyantra/dtly';
|
|
6
|
+
const SERVER = { command: 'npx', args: ['-y', PKG, 'mcp'] };
|
|
7
|
+
// Skill folders. ".agents/skills" is the shared Agent Skills location read by Codex, Cursor,
|
|
8
|
+
// Gemini CLI, GitHub Copilot and others; Claude Code reads its own skills folder.
|
|
9
|
+
export const skillTargets = (agent, project) => {
|
|
10
|
+
const home = os.homedir();
|
|
11
|
+
const claude = project ? path.resolve('.claude/skills') : path.join(process.env.CLAUDE_CONFIG_DIR ?? path.join(home, '.claude'), 'skills');
|
|
12
|
+
const shared = project ? path.resolve('.agents/skills') : path.join(home, '.agents', 'skills');
|
|
13
|
+
if (agent === 'claude')
|
|
14
|
+
return [claude];
|
|
15
|
+
if (['codex', 'cursor', 'gemini', 'copilot', 'agents'].includes(agent))
|
|
16
|
+
return [shared];
|
|
17
|
+
if (agent === 'all')
|
|
18
|
+
return [claude, shared];
|
|
19
|
+
throw new Error(`Unknown agent "${agent}". Use claude, codex, cursor, gemini, copilot or all.`);
|
|
20
|
+
};
|
|
21
|
+
export const SKILL_NAME = 'moti';
|
|
22
|
+
export const installSkill = (pkgRoot, dirs) => dirs.map((base) => {
|
|
23
|
+
const dest = path.join(base, SKILL_NAME);
|
|
24
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
25
|
+
fs.cpSync(path.join(pkgRoot, 'plugin/skills', SKILL_NAME), dest, { recursive: true });
|
|
26
|
+
// Before 0.2.2 the skill was called "dtly"; remove that copy so agents don't see it twice.
|
|
27
|
+
const old = path.join(base, 'dtly', 'SKILL.md');
|
|
28
|
+
if (fs.existsSync(old) && /^name: dtly$/m.test(fs.readFileSync(old, 'utf8')))
|
|
29
|
+
fs.rmSync(path.dirname(old), { recursive: true, force: true });
|
|
30
|
+
return dest;
|
|
31
|
+
});
|
|
32
|
+
const json = (o) => JSON.stringify(o, null, 2);
|
|
33
|
+
// MCP setup per agent: a ready-to-run command where the agent has one, otherwise the config snippet.
|
|
34
|
+
export const MCP_SETUP = {
|
|
35
|
+
claude: {
|
|
36
|
+
file: 'Claude Code',
|
|
37
|
+
text: `claude mcp add --scope user dtly -- npx -y ${PKG} mcp\n\n# or install the plugin (MCP server + skill):\n/plugin install dtly --marketplace dnyantra/dtly`,
|
|
38
|
+
},
|
|
39
|
+
codex: {
|
|
40
|
+
file: '~/.codex/config.toml (or .codex/config.toml in a trusted project)',
|
|
41
|
+
text: `codex mcp add dtly -- npx -y ${PKG} mcp\n\n# or add to the config file:\n[mcp_servers.dtly]\ncommand = "npx"\nargs = ["-y", "${PKG}", "mcp"]\n# for unattended runs (codex exec), pre-approve DT.ly's tools:\ndefault_tools_approval_mode = "approve"`,
|
|
42
|
+
},
|
|
43
|
+
cursor: { file: '~/.cursor/mcp.json (or .cursor/mcp.json in the project)', text: json({ mcpServers: { dtly: SERVER } }) },
|
|
44
|
+
gemini: { file: '~/.gemini/settings.json (or .gemini/settings.json in the project)', text: json({ mcpServers: { dtly: SERVER } }) },
|
|
45
|
+
copilot: { file: '.vscode/mcp.json (VS Code with GitHub Copilot)', text: json({ servers: { dtly: { type: 'stdio', ...SERVER } } }) },
|
|
46
|
+
windsurf: { file: '~/.codeium/windsurf/mcp_config.json', text: json({ mcpServers: { dtly: SERVER } }) },
|
|
47
|
+
};
|
|
48
|
+
export const setupGuide = (agent) => {
|
|
49
|
+
const m = MCP_SETUP[agent];
|
|
50
|
+
if (!m)
|
|
51
|
+
throw new Error(`Unknown agent "${agent}". Options: ${Object.keys(MCP_SETUP).join(', ')}`);
|
|
52
|
+
const skillDir = agent === 'claude' ? '~/.claude/skills' : '~/.agents/skills';
|
|
53
|
+
return [
|
|
54
|
+
`DT.ly setup for ${agent}`,
|
|
55
|
+
'',
|
|
56
|
+
`1. Skill "moti" (motion-design guidance for the agent) → ${skillDir}/${SKILL_NAME}`,
|
|
57
|
+
` npx ${PKG} skill install --agent ${agent}`,
|
|
58
|
+
` (or for every agent at once: npx skills add dnyantra/dtly)`,
|
|
59
|
+
'',
|
|
60
|
+
`2. MCP server (the editing tools) → ${m.file}`,
|
|
61
|
+
...m.text.split('\n').map((l) => (l ? ` ${l}` : '')),
|
|
62
|
+
'',
|
|
63
|
+
'3. Restart the agent and try: /moti make a 15 second vertical ad for <your business>',
|
|
64
|
+
'Needs Node.js 20+ and FFmpeg on PATH.',
|
|
65
|
+
].join('\n');
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from 'node:fs';
|
|
3
|
-
import os from 'node:os';
|
|
4
3
|
import path from 'node:path';
|
|
5
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { installSkill, MCP_SETUP, setupGuide, skillTargets } from './agents.js';
|
|
6
6
|
import { listPresets } from './presets/index.js';
|
|
7
7
|
import { renderContactSheet, renderStill, renderVideo, renderVideoParallel } from './render/export.js';
|
|
8
8
|
import { writeProject } from './ops/store.js';
|
|
@@ -19,7 +19,9 @@ After Effects-style motion graphics as JSON, rendered to MP4.
|
|
|
19
19
|
dtly presets list text animators, openers, slides, transitions
|
|
20
20
|
dtly studio <project.json> [--port 4400] [--no-open] browser preview + timeline editor
|
|
21
21
|
dtly mcp run the MCP server (stdio) for AI agents
|
|
22
|
-
dtly
|
|
22
|
+
dtly setup <agent> how to add DT.ly to claude, codex, cursor, gemini, copilot, windsurf
|
|
23
|
+
dtly skill install [--agent claude|codex|cursor|gemini|copilot|all] [--project] [--dir d]
|
|
24
|
+
install the "moti" agent skill (default: all)
|
|
23
25
|
|
|
24
26
|
Docs: https://github.com/dnyantra/dtly`;
|
|
25
27
|
const flag = (name) => { const i = rest.indexOf(`--${name}`); return i >= 0 ? rest[i + 1] : undefined; };
|
|
@@ -74,11 +76,15 @@ try {
|
|
|
74
76
|
await startMcpServer();
|
|
75
77
|
}
|
|
76
78
|
else if (cmd === 'skill' && rest[0] === 'install') {
|
|
77
|
-
const
|
|
78
|
-
const dest
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
const dirs = flag('dir') ? [flag('dir')] : skillTargets(flag('agent') ?? 'all', rest.includes('--project'));
|
|
80
|
+
for (const dest of installSkill(pkgRoot, dirs))
|
|
81
|
+
console.log(`Installed the moti skill to ${dest}`);
|
|
82
|
+
console.log(`Next, add the MCP server to your agent: dtly setup <claude|codex|cursor|gemini|copilot|windsurf>`);
|
|
83
|
+
}
|
|
84
|
+
else if (cmd === 'setup') {
|
|
85
|
+
if (!rest[0])
|
|
86
|
+
throw new Error(`Which agent? dtly setup <${Object.keys(MCP_SETUP).join('|')}>`);
|
|
87
|
+
console.log(setupGuide(rest[0]));
|
|
82
88
|
}
|
|
83
89
|
else if (cmd === '--version' || cmd === '-v' || cmd === 'version') {
|
|
84
90
|
console.log(VERSION);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -11,6 +11,8 @@ import { editProject, readProject, writeProject } from '../ops/store.js';
|
|
|
11
11
|
import { listPresets, PRESETS } from '../presets/index.js';
|
|
12
12
|
import { renderContactSheet, renderStill, renderVideoParallel } from '../render/export.js';
|
|
13
13
|
import { VERSION } from '../version.js';
|
|
14
|
+
// Tools that don't change the project (renders only write preview images to .dtly/frames).
|
|
15
|
+
const READ_ONLY = { readOnlyHint: true, destructiveHint: false, openWorldHint: false };
|
|
14
16
|
const studios = new Map();
|
|
15
17
|
export const createMcpServer = () => {
|
|
16
18
|
const server = new McpServer({ name: 'dtly', title: 'DT.ly — from the creator of CustomerPro.in', version: VERSION });
|
|
@@ -44,14 +46,17 @@ export const createMcpServer = () => {
|
|
|
44
46
|
return `Created ${a.project}\n${ops.describe(readProject(a.project))}`;
|
|
45
47
|
})());
|
|
46
48
|
server.registerTool('project_describe', {
|
|
49
|
+
annotations: READ_ONLY,
|
|
47
50
|
description: 'Outline of the project: comps, layer stack (index 0 = top), timing, and which properties are animated with keyframe times. Call this before editing.',
|
|
48
51
|
inputSchema: { project: projectArg },
|
|
49
52
|
}, (a) => run(() => ops.describe(readProject(a.project)))());
|
|
50
53
|
server.registerTool('project_validate', {
|
|
54
|
+
annotations: READ_ONLY,
|
|
51
55
|
description: 'Static checks: broken parent/matte/precomp references, bad in/out points, keyframes outside the comp.',
|
|
52
56
|
inputSchema: { project: projectArg },
|
|
53
57
|
}, (a) => run(() => { const w = ops.validate(readProject(a.project)); return w.length ? w.join('\n') : 'No problems found.'; })());
|
|
54
58
|
server.registerTool('layer_get', {
|
|
59
|
+
annotations: READ_ONLY,
|
|
55
60
|
description: 'Full JSON of one layer, including every property and keyframe.',
|
|
56
61
|
inputSchema: { project: projectArg, layer: z.string() },
|
|
57
62
|
}, (a) => run(() => JSON.stringify(ops.findLayer(readProject(a.project), a.layer).layer, null, 2))());
|
|
@@ -119,6 +124,7 @@ export const createMcpServer = () => {
|
|
|
119
124
|
inputSchema: { project: projectArg, layer: z.string(), property: z.string(), time: z.number(), ease: easeArg },
|
|
120
125
|
}, (a) => run(() => { editProject(a.project, (p) => ops.setEase(p, a.layer, a.property, a.time, (a.ease ?? 'linear'))); return `Ease set`; })());
|
|
121
126
|
server.registerTool('preset_list', {
|
|
127
|
+
annotations: READ_ONLY,
|
|
122
128
|
description: 'List presets: text animators (text.*), kinetic typography (kinetic.*), openers (opener.*), slideshows (slides.*), transitions (transition.*), elements (element.*), with their parameters.',
|
|
123
129
|
inputSchema: {},
|
|
124
130
|
}, () => run(() => listPresets())());
|
|
@@ -151,6 +157,7 @@ export const createMcpServer = () => {
|
|
|
151
157
|
return `DT.ly Studio for ${path.basename(file)}: ${s.url}`;
|
|
152
158
|
})());
|
|
153
159
|
server.registerTool('render_frame', {
|
|
160
|
+
annotations: READ_ONLY,
|
|
154
161
|
description: 'Render one frame and return it as an image so you can check layout, legibility and timing. Use scale ~0.4 for 1080x1920.',
|
|
155
162
|
inputSchema: { project: projectArg, time: z.number(), comp: z.string().optional(), scale: z.number().optional() },
|
|
156
163
|
}, async (a) => {
|
|
@@ -164,6 +171,7 @@ export const createMcpServer = () => {
|
|
|
164
171
|
}
|
|
165
172
|
});
|
|
166
173
|
server.registerTool('render_sheet', {
|
|
174
|
+
annotations: READ_ONLY,
|
|
167
175
|
description: 'Render a contact sheet of several times in one image — the fastest way to review motion and pacing.',
|
|
168
176
|
inputSchema: { project: projectArg, times: z.array(z.number()), comp: z.string().optional(), columns: z.number().optional() },
|
|
169
177
|
}, async (a) => {
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.2.
|
|
1
|
+
export declare const VERSION = "0.2.2";
|
|
2
2
|
export declare const BRAND = "DT.ly \u2014 from the creator of CustomerPro.in";
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dnyantra/dtly",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "DT.ly — After Effects-style motion graphics as JSON, rendered to MP4, with an MCP server for AI agents. From the creator of CustomerPro.in.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"motion-graphics",
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moti
|
|
3
|
+
description: Make motion graphics and short videos with DT.ly — After Effects-style layers, keyframes and text animators — for ads, promos, reels, openers, kinetic typography, slideshows, lower thirds and title cards, in any language including Indian scripts. Uses the dtly MCP tools (or the dtly CLI). Use when someone asks to make, animate, retime or edit a video, reel, ad, opener or motion graphic, or mentions a DT.ly project.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# moti
|
|
7
|
+
|
|
8
|
+
moti is DT.ly's motion designer, and so are you now. You plan the piece, build it layer by layer, look at your own frames,
|
|
9
|
+
and hand over a video someone would actually post.
|
|
10
|
+
|
|
11
|
+
The bar: it should feel made by a good studio for this exact brand — every move eased, every line
|
|
12
|
+
readable, nothing on screen that doesn't earn its place.
|
|
13
|
+
|
|
14
|
+
| Option | Default |
|
|
15
|
+
|---|---|
|
|
16
|
+
| Format | vertical 1080×1920 at 30 fps; also `landscape` 1920×1080, `square` 1080×1080 |
|
|
17
|
+
| Length | 15 s for a reel or ad; 6 s for an opener; follow the brief when it says |
|
|
18
|
+
| Style | inferred from the brief (see [Styles](#styles)) |
|
|
19
|
+
| Language | the language of the brief; keep brand names and numbers as the client writes them |
|
|
20
|
+
|
|
21
|
+
Work in a `dtly-output/` folder in the current directory unless the user names a project file:
|
|
22
|
+
`project.json`, `plan.md`, the final `.mp4`, and a `work/` subfolder for frames and downloads.
|
|
23
|
+
|
|
24
|
+
## 0. Tools
|
|
25
|
+
|
|
26
|
+
DT.ly's editing tools come from its MCP server: `project_create`, `layer_add`, `keyframe_set`,
|
|
27
|
+
`preset_apply`, `render_sheet`, `render_video`, `studio_open` and more (some agents prefix them
|
|
28
|
+
`dtly` or `mcp__dtly__`). If they're missing, give the user their one-line setup and carry on with
|
|
29
|
+
the CLI meanwhile:
|
|
30
|
+
|
|
31
|
+
- Claude Code: `claude mcp add --scope user dtly -- npx -y @dnyantra/dtly mcp`
|
|
32
|
+
- Codex: `codex mcp add dtly -- npx -y @dnyantra/dtly mcp`
|
|
33
|
+
- Cursor, Gemini CLI, Windsurf, VS Code Copilot: `npx @dnyantra/dtly setup <agent>` prints the config.
|
|
34
|
+
- **CLI fallback:** edit `project.json` directly (see [The model](#the-model)), check with
|
|
35
|
+
`dtly sheet project.json work/sheet.png 0.5,2,4` and look at the image, render with
|
|
36
|
+
`dtly render project.json out.mp4`. `dtly init --starter opener|kinetic|bars` gives a start.
|
|
37
|
+
Use the installed `dtly` command if there is one (`npm i -g @dnyantra/dtly`); otherwise
|
|
38
|
+
`npx @dnyantra/dtly …`, which needs network access.
|
|
39
|
+
|
|
40
|
+
If a tool call is refused for approval, or neither the tools nor the CLI run, stop and tell the user
|
|
41
|
+
exactly what to fix. Don't rebuild the video with other tools — they asked for a DT.ly project they
|
|
42
|
+
can open and edit.
|
|
43
|
+
|
|
44
|
+
DT.ly needs Node.js 20+ and FFmpeg on the PATH.
|
|
45
|
+
|
|
46
|
+
## 1. Gather
|
|
47
|
+
|
|
48
|
+
Collect the real material before designing anything.
|
|
49
|
+
|
|
50
|
+
| Source | What to take from it |
|
|
51
|
+
|---|---|
|
|
52
|
+
| The brief | the offer, the audience, the one action the viewer should take, the script if given |
|
|
53
|
+
| Brand | logo, exact colours, fonts, tagline, phone, address, website |
|
|
54
|
+
| Media | the client's clips and photos — look at them (`render_frame` on a test layer, or extract stills) and note the strongest shots |
|
|
55
|
+
| An existing DT.ly project | `project_describe` first; change only what was asked |
|
|
56
|
+
|
|
57
|
+
Then answer, in one line each: What is being sold? To whom? Why them over the shop next door? What
|
|
58
|
+
must the viewer remember? What should they do next, and how (call, visit, tap)? What's the visual
|
|
59
|
+
hook for the first two seconds?
|
|
60
|
+
|
|
61
|
+
Never invent facts: no made-up phone numbers, prices, discounts, ratings or testimonials. If the
|
|
62
|
+
brief leaves a contact detail out, use a clearly marked placeholder and say so when you deliver.
|
|
63
|
+
|
|
64
|
+
## 2. Plan
|
|
65
|
+
|
|
66
|
+
Write `plan.md`: the angle, the hook, the beats with durations that add up to the length, the
|
|
67
|
+
style, the colours and fonts, and what moves in each beat.
|
|
68
|
+
|
|
69
|
+
**Shape for ads and promos:** Hook (2–3 s) → Brand (2–3 s) → 2–3 benefits or proofs → Call to
|
|
70
|
+
action (3–4 s, the phone number or address on screen long enough to write down). A starting
|
|
71
|
+
shape, not a template — openers and kinetic pieces have their own rhythm.
|
|
72
|
+
|
|
73
|
+
If the user points at one thing — a new product, an offer, a festival — make the whole piece
|
|
74
|
+
about that.
|
|
75
|
+
|
|
76
|
+
## Creative laws
|
|
77
|
+
|
|
78
|
+
- **The hook decides.** The first two seconds must move and must say something. Plan them first.
|
|
79
|
+
- **One idea per beat.** One hero element on screen at a time; support text at least 1.6× smaller.
|
|
80
|
+
- **Ease everything.** Entrances `expoOut`/`cubicOut`, exits `easeIn`/`expoIn`, moves between rests
|
|
81
|
+
`easyEase`. Linear only for slow drifts. One bouncy (`backOut`, spring) element per beat, the rest calm.
|
|
82
|
+
- **Readable.** A line the viewer must read stays fully settled for about 0.35 s per word, counted
|
|
83
|
+
from when the whole line has landed. Pace comes from cuts and motion, not from yanking text early.
|
|
84
|
+
- **Overlap, don't queue.** Start the next element while the last one is settling (30–50 %). It
|
|
85
|
+
reads as one gesture instead of a slideshow.
|
|
86
|
+
- **Use the real thing.** The client's footage, photos, logo and words beat stock shapes. Darken or
|
|
87
|
+
blur footage behind text (`brightness` 40–60 %, light `blur`) rather than hiding it.
|
|
88
|
+
- **Safe and legible.** Keep text inside x 60–1020, y 250–1600 on vertical (platform UI covers the
|
|
89
|
+
edges). Text on busy footage gets a plate (`box`), a `dropShadow`, or a darker background.
|
|
90
|
+
- **Specific.** Their words, their colours, their town. "Quality you can trust" on its own is banned;
|
|
91
|
+
say what makes it true.
|
|
92
|
+
- **Every frame postable.** Pause anywhere — it should still look designed.
|
|
93
|
+
|
|
94
|
+
## Styles
|
|
95
|
+
|
|
96
|
+
Presets are defaults; a freeform direction from the user ("like a Diwali sale banner") overrides them.
|
|
97
|
+
|
|
98
|
+
| Style | Feel | Motion and cuts |
|
|
99
|
+
|---|---|---|
|
|
100
|
+
| `clean` | Calm, trustworthy, local business | `fadeUp`/`maskedLines`, pushes and crossfades, long holds |
|
|
101
|
+
| `bold` | Loud offer, sale, launch | `slam`/`popIn`, colour bars, whip transitions, short beats |
|
|
102
|
+
| `premium` | Elegant, restrained | `blurIn`/`trackingIn`, slow eases, lots of empty space |
|
|
103
|
+
| `kinetic` | Words are the visuals | `kinetic.sequence`, emphasis words bigger and coloured, cut on the beat |
|
|
104
|
+
| `festive` | Celebration, greetings | warm palette, `cascade`/`popIn`, gentle wiggle on accents |
|
|
105
|
+
| `explainer` | Steps, features | lower thirds, numbered cards, slideUp transitions |
|
|
106
|
+
|
|
107
|
+
## Sound
|
|
108
|
+
|
|
109
|
+
Music sits under everything; a voiceover sits on top of the music. Under a voice keep music around
|
|
110
|
+
0.15–0.25 volume, raise it in the gaps, and fade it out over the last second (`fadeOut`). Match cuts
|
|
111
|
+
to the beat where you can (`comp_update` with `markers` helps). For voiceovers in Indian languages,
|
|
112
|
+
generate them per beat so each line fits its scene, and check the spoken words against the script.
|
|
113
|
+
|
|
114
|
+
## 3. Build
|
|
115
|
+
|
|
116
|
+
- `project_create` with the chosen format and length. Scenes edited as a unit → `comp_add` and
|
|
117
|
+
`precomp` layers.
|
|
118
|
+
- Build bottom-up: background → graphics → text → audio. `layer_add` index 0 is the top.
|
|
119
|
+
- Reach for presets first (`preset_list`): openers, `kinetic.sequence`, `slides.slideshow`,
|
|
120
|
+
`transition.between`, `element.lowerThird`, the `text.*` animators. They write ordinary layers
|
|
121
|
+
and keyframes, so refine them with `keyframe_set`, `keyframe_ease`, `keyframe_move`, `layer_update`.
|
|
122
|
+
- If a person is around, `studio_open` early: they watch your edits land live and can drag keyframes
|
|
123
|
+
or fix text themselves. Their edits save to the same file — `project_describe` again before your
|
|
124
|
+
next change when they say they adjusted something.
|
|
125
|
+
|
|
126
|
+
## 4. Look, then fix
|
|
127
|
+
|
|
128
|
+
Before rendering, `render_sheet` across every beat **and** mid-transition, and `render_frame` at
|
|
129
|
+
scale 0.4 for detail. Fix text overflowing or colliding, low contrast, anything clipped by the safe
|
|
130
|
+
area, and entrances still moving when the viewer should be reading. Two busy layouts crossfading
|
|
131
|
+
make a muddy double exposure: move the old content out, then bring the new in, or dip through the
|
|
132
|
+
background. Run `project_validate`. Only then `render_video`.
|
|
133
|
+
|
|
134
|
+
## 5. Deliver
|
|
135
|
+
|
|
136
|
+
- The `.mp4`, plus a poster: the strongest settled frame (text fully landed, not mid-move) saved
|
|
137
|
+
with `render_frame` as `poster.png`.
|
|
138
|
+
- Tell the user where the files are, the angle in one sentence, any placeholders they must fill,
|
|
139
|
+
and offer the next step: open it in Studio to tweak, another style, or 30 s / 60 s and square versions.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## The model
|
|
144
|
+
|
|
145
|
+
A project is JSON: `comps[]`, each with `width`, `height`, `fps`, `duration`, `background` and
|
|
146
|
+
`layers[]` (index 0 is the top layer).
|
|
147
|
+
|
|
148
|
+
| After Effects | DT.ly |
|
|
149
|
+
|---|---|
|
|
150
|
+
| Composition / precomp | `comps[]`, layer `type: "precomp"` |
|
|
151
|
+
| Layer in/out | `inPoint` / `outPoint` (seconds) |
|
|
152
|
+
| Transform | `transform.anchor/position/scale(%)/rotation(°)/opacity(%)/skew` |
|
|
153
|
+
| Keyframes | any property as `{keyframes: [{t, v, ease}]}`; `ease` shapes the segment *leaving* that key |
|
|
154
|
+
| Easing | `easyEase`, `easeIn`, `easeOut`, `cubicOut`, `expoIn/Out/InOut`, `backOut`, bezier `[x1,y1,x2,y2]`, `{spring: {stiffness, damping}}`, `hold` |
|
|
155
|
+
| `wiggle()` | `{keyframes: […], wiggle: {freq, amp, seed}}` |
|
|
156
|
+
| Parenting / null | `parent: layerId`, `type: "null"` (inherits transform, not opacity) |
|
|
157
|
+
| Masks | `masks: [{shape: rect\|ellipse\|path, rect: [x,y,w,h], inverted}]`, in layer space |
|
|
158
|
+
| Track matte | `matte: {layer, mode: alpha\|alphaInverted}` |
|
|
159
|
+
| Trim paths | shape `trim: {start, end}` in % — draw-on lines, rings, underlines |
|
|
160
|
+
| Text animators | `animators: [{unit: grapheme\|word\|line, stagger, duration, delay, order, ease, from: {opacity, x, y, scale, rotation, blur, tracking, color}, clip, mode: "out"}]` |
|
|
161
|
+
| Effects | `blur`, `dropShadow`, `glow`, `fill`, `brightness`, `saturate`, `contrast` |
|
|
162
|
+
| Motion blur | `motionBlur: {samples, shutter}` |
|
|
163
|
+
| Blending | `blendMode: multiply\|screen\|overlay\|add\|…` |
|
|
164
|
+
|
|
165
|
+
Layer types: `text`, `shape` (`rect`, `ellipse`, `polygon`, `path`, `line`), `solid`, `image`,
|
|
166
|
+
`video` (`trimIn`, `speed`, `volume`), `audio` (`volume`, `fadeIn`, `fadeOut`), `precomp`, `null`.
|
|
167
|
+
Solids, images, videos and precomps are anchored at their centre; shapes are centred on their
|
|
168
|
+
origin; text is anchored at its alignment point, vertically centred. Position defaults to the
|
|
169
|
+
comp centre.
|
|
170
|
+
|
|
171
|
+
## Indian scripts
|
|
172
|
+
|
|
173
|
+
- Devanagari and other Indic scripts shape correctly at every unit; per-letter animation keeps
|
|
174
|
+
conjuncts (क्ष, श्र, र्ह) whole.
|
|
175
|
+
- Animate body text by `word` — readers take Marathi and Hindi in whole words. Save `grapheme`
|
|
176
|
+
effects for one or two display words.
|
|
177
|
+
- Avoid wide `tracking` on Devanagari; it breaks the headline bar (शिरोरेखा) between letters.
|
|
178
|
+
- Bundled fonts: `Baloo 2` (display, default) and `Mukta` (text). Register others in `project.fonts`.
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: dtly
|
|
3
|
-
description: Make motion graphics and videos with DT.ly — After Effects-style compositions, layers, keyframes, text animators, kinetic typography, openers, slideshows and transitions — through the dtly MCP tools. Use when asked to create or edit a promo, ad, reel, opener, title sequence, lyric/kinetic text video, slideshow or lower third, or to change timing, easing or animation of an existing DT.ly project.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# DT.ly motion design
|
|
7
|
-
|
|
8
|
-
DT.ly is a layer-and-keyframe motion engine, modelled on After Effects. A project is a JSON
|
|
9
|
-
file; you edit it only through the `dtly` MCP tools, then look at rendered frames to check it.
|
|
10
|
-
|
|
11
|
-
## Workflow
|
|
12
|
-
|
|
13
|
-
1. **Plan the beats first.** Write a shot list with times before touching tools: what is on
|
|
14
|
-
screen, for how long, and what moves. Reading time ≈ 0.4 s per word + 0.5 s, minimum 0.8 s.
|
|
15
|
-
2. `project_create` (default 1080x1920, 30 fps). Scenes that are edited as a unit → `comp_add`
|
|
16
|
-
and drop them in as `precomp` layers.
|
|
17
|
-
3. Build bottom-up: background (video/image/solid) → graphics → text → audio.
|
|
18
|
-
`layer_add` uses index 0 = top, so add the background with a high `index` or first.
|
|
19
|
-
4. Reach for presets (`preset_list`) for anything standard, then refine with
|
|
20
|
-
`keyframe_set` / `keyframe_ease` / `layer_update`.
|
|
21
|
-
5. **Always look.** `render_sheet` across the key moments (entrances mid-way, holds, exits),
|
|
22
|
-
fix, look again. `render_frame` at scale 0.4 for detail. `project_validate` before export.
|
|
23
|
-
6. `render_video` only when the sheet looks right.
|
|
24
|
-
|
|
25
|
-
**Working with a human:** call `studio_open` early so they can watch the project in DT.ly Studio
|
|
26
|
-
(browser preview + timeline). Your edits appear there live, and they can drag keyframes, trim layers
|
|
27
|
-
or retype text themselves — those edits save to the same file, so call `project_describe` again
|
|
28
|
-
before your next change whenever they say they adjusted something.
|
|
29
|
-
|
|
30
|
-
## The model (AE vocabulary)
|
|
31
|
-
|
|
32
|
-
| After Effects | DT.ly |
|
|
33
|
-
|---|---|
|
|
34
|
-
| Composition / precomp | `comps[]`, layer `type: "precomp"` |
|
|
35
|
-
| Layer in/out point | `inPoint` / `outPoint` (comp seconds) |
|
|
36
|
-
| Transform | `transform.anchor/position/scale(%)/rotation(°)/opacity(%)/skew` |
|
|
37
|
-
| Stopwatch keyframes | any property as `{keyframes:[{t,v,ease}]}`; `ease` shapes the segment *leaving* that key |
|
|
38
|
-
| Easy Ease / graph editor | `easyEase`, `easeIn`, `easeOut`, `cubicOut`, `expoIn/Out/InOut`, `backOut`, bezier `[x1,y1,x2,y2]`, `{spring:{stiffness,damping}}`, `hold` |
|
|
39
|
-
| wiggle() | `{keyframes:[…], wiggle:{freq, amp, seed}}` |
|
|
40
|
-
| Parenting / null | `parent: layerId`, `type: "null"` (transform only, not opacity) |
|
|
41
|
-
| Masks | `masks: [{shape: rect|ellipse|path, rect:[x,y,w,h] (animatable), inverted}]` in layer space |
|
|
42
|
-
| Track matte | `matte: {layer, mode: alpha|alphaInverted}`; the matte layer is not drawn on its own |
|
|
43
|
-
| Trim Paths | shape `trim: {start, end}` in % — draw-on lines, rings, underlines |
|
|
44
|
-
| Text Animator + range selector | `animators: [{unit: grapheme|word|line, stagger, duration, delay, order, ease, from:{opacity,x,y,scale,rotation,blur,tracking,color}, clip, mode:"out"}]` |
|
|
45
|
-
| Effects | `effects: blur, dropShadow, glow, fill, brightness, saturate, contrast` |
|
|
46
|
-
| Motion blur switch | `motionBlur: {samples, shutter}` |
|
|
47
|
-
| Blending modes | `blendMode: multiply|screen|overlay|add|…` |
|
|
48
|
-
|
|
49
|
-
Layer-space origins: solids/images/videos/precomps use their top-left with the anchor at the
|
|
50
|
-
centre by default; shapes are centred on the origin; text is anchored at its alignment point,
|
|
51
|
-
vertically centred on the block. Position defaults to comp centre.
|
|
52
|
-
|
|
53
|
-
## Motion design rules of thumb
|
|
54
|
-
|
|
55
|
-
- **Ease everything.** Entrances: `cubicOut`/`expoOut` (fast in, gentle settle). Exits: `easeIn`/`expoIn`.
|
|
56
|
-
Moves between two rests: `easyEase` or `expoInOut`. Linear only for constant drift (Ken Burns, rotation loops).
|
|
57
|
-
- **Timing.** UI-style moves 0.3–0.6 s; titles 0.6–1.2 s; nothing important shorter than 0.25 s.
|
|
58
|
-
Stagger: graphemes 0.02–0.05 s, words 0.06–0.15 s, lines 0.1–0.2 s.
|
|
59
|
-
- **Overshoot sparingly** (`backOut`, springs): one bouncy element per beat, the rest calm.
|
|
60
|
-
- **Overlap actions.** Start the next element before the previous one settles (≈ 30–50 % overlap); it reads as one gesture.
|
|
61
|
-
- **Hierarchy.** One hero element per moment. Size contrast ≥ 1.6× between title and support text.
|
|
62
|
-
- **Legibility.** Text on footage needs a plate (`box`), a `dropShadow`, or a darkened background
|
|
63
|
-
(`brightness` 40–60 %). Keep text inside the safe area: for 9:16 keep important content
|
|
64
|
-
between y ≈ 250 and y ≈ 1600 and x 60–1020 (UI covers the edges on Reels/Shorts).
|
|
65
|
-
- **Hold.** Let finished text sit still long enough to read before the next thing moves.
|
|
66
|
-
- **Kinetic typography.** Vary scale and colour for emphasis words; alternate entrance directions;
|
|
67
|
-
cut on the beat of the music (markers help: `comp_update` with `markers`).
|
|
68
|
-
|
|
69
|
-
## Indian scripts (Devanagari, etc.)
|
|
70
|
-
|
|
71
|
-
- Shaping is correct at any unit; per-grapheme animation keeps conjuncts (क्ष, श्र, र्ह) intact.
|
|
72
|
-
- Prefer `word` units for Marathi/Hindi body text — readers parse whole words; keep `grapheme`
|
|
73
|
-
effects for short display words.
|
|
74
|
-
- Avoid large `tracking` on Devanagari: it breaks the visual headline (शिरोरेखा) between letters.
|
|
75
|
-
- Bundled fonts: `Baloo 2` (display, default) and `Mukta` (text). Register others in `project.fonts`.
|
|
76
|
-
|
|
77
|
-
## Presets
|
|
78
|
-
|
|
79
|
-
`preset_list` is the source of truth. Highlights:
|
|
80
|
-
- `text.*` — fadeUp, popIn, slam, blurIn, maskedLines, cascade, trackingIn, centerOut, typewriter, colorSweep, exits (`fadeOutDown`, `blurOut`, `maskedLinesOut`).
|
|
81
|
-
- `kinetic.sequence` — phrase-by-phrase kinetic typography with emphasis words.
|
|
82
|
-
- `opener.logoReveal`, `opener.bars` — brand openers.
|
|
83
|
-
- `slides.slideshow` — sliders from images/clips with Ken Burns, captions and transitions.
|
|
84
|
-
- `transition.between` — push, crossfade, zoom, wipe, whip (motion-blurred), slideUp between two overlapping layers.
|
|
85
|
-
- `element.lowerThird`, `element.highlightWord`.
|
|
86
|
-
|
|
87
|
-
Presets only write ordinary layers and keyframes, so everything they make stays editable.
|
|
88
|
-
|
|
89
|
-
## Checks before you call it done
|
|
90
|
-
|
|
91
|
-
- `project_validate` returns no problems.
|
|
92
|
-
- A `render_sheet` across the whole timeline shows nothing clipped, overlapping or unreadable,
|
|
93
|
-
and every entrance has finished before the viewer needs to read it.
|
|
94
|
-
- Audio: music under voice ≈ 0.15–0.25 volume; fade the end (`fadeOut`) so it doesn't cut.
|