@coppsary/motionly 1.0.0
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/LICENSE +202 -0
- package/README.md +499 -0
- package/bin/motionly.js +411 -0
- package/dist/assets/main-C8oSjoH0.css +1 -0
- package/dist/assets/main-CQ2W0QKo.js +2475 -0
- package/dist/assets/main-CQ2W0QKo.js.map +1 -0
- package/dist/github.svg +3 -0
- package/dist/index.html +13 -0
- package/dist/logo.svg +12 -0
- package/dist/preset/motionly/assets/audio/audio.mp3 +0 -0
- package/dist/preset/motionly/assets/svg/antigravity-color.svg +1 -0
- package/dist/preset/motionly/assets/svg/claude-code-color.svg +7 -0
- package/dist/preset/motionly/assets/svg/code-window.svg +74 -0
- package/dist/preset/motionly/assets/svg/code.svg +22 -0
- package/dist/preset/motionly/assets/svg/codex-color.svg +1 -0
- package/dist/preset/motionly/assets/svg/export.svg +11 -0
- package/dist/preset/motionly/assets/svg/file.svg +14 -0
- package/dist/preset/motionly/assets/svg/motion.svg +12 -0
- package/dist/preset/motionly/assets/svg/motionly-logo.svg +12 -0
- package/dist/preset/motionly/assets/svg/play.svg +7 -0
- package/dist/preset/motionly/assets/svg/render-frame.svg +25 -0
- package/dist/preset/motionly/motionly-preset.gif +0 -0
- package/dist/preset/motionly/motionly.motion +385 -0
- package/eslint.config.js +44 -0
- package/package.json +95 -0
- package/templates/motionly-skill/SKILL.md +96 -0
- package/templates/project/AGENTS.md +79 -0
- package/templates/project/README.md +17 -0
- package/templates/project/meta.json +5 -0
- package/templates/project/project.motion +32 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. We also recommend that a
|
|
186
|
+
file or class name and description of purpose be included on the
|
|
187
|
+
same "printed page" as the copyright notice for easier
|
|
188
|
+
identification within third-party archives.
|
|
189
|
+
|
|
190
|
+
Copyright [yyyy] [name of copyright owner]
|
|
191
|
+
|
|
192
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
|
+
you may not use this file except in compliance with the License.
|
|
194
|
+
You may obtain a copy of the License at
|
|
195
|
+
|
|
196
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
197
|
+
|
|
198
|
+
Unless required by applicable law or agreed to in writing, software
|
|
199
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
200
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
201
|
+
See the License for the specific language governing permissions and
|
|
202
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="public/logo.svg" alt="Motionly Logo" width="100">
|
|
3
|
+
|
|
4
|
+
# Motionly
|
|
5
|
+
|
|
6
|
+
**AI-native motion graphics editor**
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<em>AI-assisted workflows create editable animation projects you can refine visually.<br/>Edit timing, assets, animations, and layouts before exporting the final result.</em>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<img src="https://img.shields.io/badge/TypeScript-5.7-3178C6?style=flat&logo=typescript&logoColor=white" alt="TypeScript">
|
|
15
|
+
<img src="https://img.shields.io/badge/Svelte-5.56-FF3E00?style=flat&logo=svelte&logoColor=white" alt="Svelte">
|
|
16
|
+
<img src="https://img.shields.io/badge/Canvas-2D_Renderer-E34F26?style=flat&logo=html5&logoColor=white" alt="Canvas">
|
|
17
|
+
<img src="https://img.shields.io/badge/GSAP-3.15-0AE448?style=flat&logo=greensock&logoColor=white" alt="GSAP">
|
|
18
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache_2.0-blue?style=flat" alt="License"></a>
|
|
19
|
+
<br>
|
|
20
|
+
<a href="https://motionly.mintlify.app/"><img src="https://img.shields.io/badge/Docs-Mintlify-7C3AED?style=flat" alt="Documentation"></a>
|
|
21
|
+
<a href="https://github.com/COPPSARY/Motionly"><img src="https://img.shields.io/github/stars/COPPSARY/Motionly?style=flat" alt="GitHub Stars"></a>
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
<p align="center">
|
|
25
|
+
<a href="#overview">Overview</a> ·
|
|
26
|
+
<a href="#showcase">Showcase</a> ·
|
|
27
|
+
<a href="#visual-editor">Visual Editor</a> ·
|
|
28
|
+
<a href="#motion-files">Motion Files</a> ·
|
|
29
|
+
<a href="#agent-and-llm-support">Agent and LLM Support</a> ·
|
|
30
|
+
<a href="#contributing">Contributing</a>
|
|
31
|
+
</p>
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Showcase
|
|
36
|
+
|
|
37
|
+
| Visual Editor |
|
|
38
|
+
| :---------------------------------------------------: |
|
|
39
|
+
|  |
|
|
40
|
+
|
|
41
|
+
| Animation Preview |
|
|
42
|
+
| :--------------------------------------------------------: |
|
|
43
|
+
|  |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Overview
|
|
48
|
+
|
|
49
|
+
Motionly is a motion graphics editor where AI-assisted workflows create editable animation projects that you can refine visually. Edit timing, assets, animations, and layouts through a timeline and canvas editor before exporting the final result.
|
|
50
|
+
|
|
51
|
+
The current focus is the core editing loop: reliable preview, direct manipulation, useful animation presets, clear timeline control, clean serialization, and dependable export.
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Visual Editor
|
|
55
|
+
|
|
56
|
+
Current editor features:
|
|
57
|
+
|
|
58
|
+
**Interface:**
|
|
59
|
+
- Left navigation rail with icon-based navigation (Media, Audio, Text, Effects, Scenes, AI Config, Settings)
|
|
60
|
+
- Organized Assets panel with folder structure showing audio and visual assets
|
|
61
|
+
- Assets panel tabs: Assets and Presets
|
|
62
|
+
- AI Config (rail): enabled skills and an AI context preview
|
|
63
|
+
- Settings (rail): brand profile editor
|
|
64
|
+
- Preset browser with animated GIF previews
|
|
65
|
+
- Professional properties panel with custom sliders, styled inputs, and visual preset cards
|
|
66
|
+
|
|
67
|
+
**Canvas & Preview:**
|
|
68
|
+
- Centered canvas preview with the project aspect ratio
|
|
69
|
+
- Play, pause, reset, timeline scrubber, timecode, and frame display
|
|
70
|
+
- Fit, zoom, and fullscreen preview controls
|
|
71
|
+
- Click asset thumbnails for temporary full-screen preview (no timeline disruption)
|
|
72
|
+
|
|
73
|
+
**Editing:**
|
|
74
|
+
- Drag-to-move and corner scaling for elements
|
|
75
|
+
- Visual position, scale, rotation, opacity, text, color, timing, and easing controls
|
|
76
|
+
- Add text, delete layers, resize the timeline, and trim layer ranges
|
|
77
|
+
- Scene, canvas, and timeline selection
|
|
78
|
+
|
|
79
|
+
**Timeline Editing:**
|
|
80
|
+
- Persistent Main, Overlay, and Audio track roles saved through `.motion`
|
|
81
|
+
- Uniform visual layers with free gaps/overlaps and no ripple behavior
|
|
82
|
+
- Horizontal timing changes stay on the current layer; vertical drag moves to any visual layer
|
|
83
|
+
- Optional clip-edge/playhead snapping is off by default
|
|
84
|
+
- Grab a clip's center to move it in time or across layers; a dashed ghost previews the persisted landing position (mouse and touch)
|
|
85
|
+
- On-timeline GSAP keyframes: selecting an animated element shows draggable keyframe diamonds on its row with per-keyframe easing controls, add-at-playhead, and right-click delete; edits persist into `.motion`
|
|
86
|
+
- Playhead-based Split for media, text, images, overlays, and effects
|
|
87
|
+
- Timeline zoom controls plus `Ctrl/Cmd` wheel or trackpad pinch
|
|
88
|
+
- Undo/Redo history and persistent track hide/mute controls
|
|
89
|
+
- Visual media clips with thumbnails and transition markers
|
|
90
|
+
|
|
91
|
+
**Audio:**
|
|
92
|
+
- Audio defined in `.motion` format (persists with project)
|
|
93
|
+
- Synchronized audio preview playback
|
|
94
|
+
- Audio shown in organized Assets panel
|
|
95
|
+
|
|
96
|
+
**Project Management:**
|
|
97
|
+
- Open and save `.motion` projects
|
|
98
|
+
- Load presets with confirmation dialog
|
|
99
|
+
- All edits automatically serialize to `.motion` format
|
|
100
|
+
|
|
101
|
+
**AI Assistant:**
|
|
102
|
+
- BYOK Motionly Assistant that generates and loads editable `.motion` projects
|
|
103
|
+
- OpenAI, Anthropic, OpenRouter, Google Gemini, Hugging Face, and custom OpenAI-compatible endpoints
|
|
104
|
+
- Locally stored keys and model overrides
|
|
105
|
+
- AI Config (rail) manages enabled skills fed to the assistant; Settings (rail) holds a brand profile (BRAND.md). Both become assistant knowledge.
|
|
106
|
+
|
|
107
|
+
**Export:**
|
|
108
|
+
- Browser-supported MP4 export with progress
|
|
109
|
+
|
|
110
|
+
Current limits:
|
|
111
|
+
|
|
112
|
+
- MP4/WebM clips use the browser's native codecs and now render decoded frames during preview, scrub, trim, and export
|
|
113
|
+
- Video clip audio is muted and is not mixed into export yet; use the project audio track
|
|
114
|
+
- Two simultaneous clips that reference one video alias cannot seek that decoder to two source times; import a second alias when needed
|
|
115
|
+
- MP4 export runs in real time and does not include audio from video clips yet (see AUDIO_EXPORT_LIMITATION.md)
|
|
116
|
+
- Canvas resolution, aspect ratio, and FPS still come from `.motion`
|
|
117
|
+
- WebM, GIF, still-image, and image-sequence export are not exposed yet
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Motion Files
|
|
122
|
+
|
|
123
|
+
The main sample project is:
|
|
124
|
+
|
|
125
|
+
```text
|
|
126
|
+
video-motion/motionly.motion
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Its sample assets live in:
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
video-motion/assets/motionly/
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Example:
|
|
136
|
+
|
|
137
|
+
```motion
|
|
138
|
+
canvas {
|
|
139
|
+
size 1920x1080
|
|
140
|
+
fps 60
|
|
141
|
+
duration 8s
|
|
142
|
+
background #020308
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
camera {
|
|
146
|
+
zoom 1
|
|
147
|
+
x 0
|
|
148
|
+
y 0
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
audio "/assets/my-project/background.mp3"
|
|
152
|
+
|
|
153
|
+
import "/video-motion/assets/my-project/logo.svg" as mark
|
|
154
|
+
import "/video-motion/assets/my-project/video.mp4" as bgVideo
|
|
155
|
+
|
|
156
|
+
mark {
|
|
157
|
+
center
|
|
158
|
+
layer hero
|
|
159
|
+
width 220
|
|
160
|
+
opacity 0
|
|
161
|
+
animation maskReveal(delay 1s duration 900ms direction down ease power3.out)
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
text title {
|
|
165
|
+
value "Motion graphics, written."
|
|
166
|
+
center
|
|
167
|
+
layer text
|
|
168
|
+
size 72
|
|
169
|
+
textAnimation keynoteText(split words stagger 80ms duration 800ms delay 1s ease power3.out)
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
clip bgVideo {
|
|
173
|
+
track 1
|
|
174
|
+
start 0s
|
|
175
|
+
duration 5s
|
|
176
|
+
trimIn 0s
|
|
177
|
+
trimOut 0s
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Motionly supports semantic layers, camera animation, reusable presets, SVG/image assets, text reveals, generated background effects, timeline clips, audio, preview playback, and MP4 export.
|
|
182
|
+
|
|
183
|
+
### Use Your Own Assets
|
|
184
|
+
|
|
185
|
+
For a new animation:
|
|
186
|
+
|
|
187
|
+
1. Copy `video-motion/motionly.motion` to a new `.motion` file or replace its contents.
|
|
188
|
+
2. Remove sample files you do not need from `video-motion/assets/motionly/`.
|
|
189
|
+
3. Prefer creating a separate folder such as `video-motion/assets/my-project/`.
|
|
190
|
+
4. Add your own images, SVGs, logos, audio files, and videos.
|
|
191
|
+
5. Update every `import` path in the `.motion` project.
|
|
192
|
+
6. Open the project in Motionly and finish positioning and timing visually.
|
|
193
|
+
7. Or drag assets from the Assets panel onto the timeline to create clips.
|
|
194
|
+
|
|
195
|
+
Images, SVGs, and videos can be imported and used as timeline clips. Audio persists in `.motion` format. Drag assets onto the timeline to create clips that persist in the project file.
|
|
196
|
+
|
|
197
|
+
**Note:** Timeline clips reference assets by filename. Keep original files in the same location to reload projects with clips.
|
|
198
|
+
|
|
199
|
+
See [AI Authoring Guide](docs/agents/ai-authoring.mdx) for a complete asset and prompting workflow.
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Agent And LLM Support
|
|
204
|
+
|
|
205
|
+
Motionly includes a built-in AI Chat panel and repository guidance for external agent tools.
|
|
206
|
+
|
|
207
|
+
Open Motionly Assistant beside Assets, enter your own provider key, and describe the animation you want. Motionly detects OpenAI, Anthropic, OpenRouter, Google Gemini, and Hugging Face keys, or accepts a custom OpenAI-compatible endpoint. You can leave the model blank for Motionly's default or enter an exact model ID. The key and chat history stay in browser storage; requests go directly from the browser to that provider, never through a Motionly server. The assistant receives the current project and imported asset list, returns a `.motion` draft, and exposes a **Load into Editor** action that validates the source through the normal parser and scene-graph pipeline.
|
|
208
|
+
|
|
209
|
+
**Model quality matters.** The AI model you choose directly affects composition, timing, and correct preset use. Smaller models may generate valid syntax but weaker visual decisions. Prefer a current, high-capability model with strong code-generation and instruction-following performance.
|
|
210
|
+
|
|
211
|
+
For agents working inside the repository, use these files:
|
|
212
|
+
|
|
213
|
+
| Path | Purpose |
|
|
214
|
+
|---|---|
|
|
215
|
+
| `AGENTS.md` | Product scope and core `.motion` syntax |
|
|
216
|
+
| `.agents/skills/write-motionly/SKILL.md` | Storyboard, timing, composition, asset, and validation workflow |
|
|
217
|
+
| `.agents/skills/write-motionly/references/motion-syntax.md` | Supported syntax and preset reference |
|
|
218
|
+
| `docs/agents/ai-authoring.mdx` | Prompting and project setup guide |
|
|
219
|
+
|
|
220
|
+
Use this short prompt with an LLM or agent working inside the repository:
|
|
221
|
+
|
|
222
|
+
```text
|
|
223
|
+
Read AGENTS.md and .agents/skills/write-motionly/SKILL.md first.
|
|
224
|
+
Inspect my assets, storyboard the animation, then create a valid .motion project.
|
|
225
|
+
Use only supported Motionly syntax and presets. Keep one focal subject per shot,
|
|
226
|
+
avoid overlap and repeated fade-only scenes, and validate the final project.
|
|
227
|
+
Open the result for visual refinement instead of treating the generated file as final.
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
The in-app assistant or external agent creates the first editable version. Motionly remains the place where you preview, adjust, save, and export it.
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Goals
|
|
235
|
+
|
|
236
|
+
Current product goals:
|
|
237
|
+
|
|
238
|
+
- Make visual editing, selection, timeline trimming, and saving feel reliable.
|
|
239
|
+
- Improve preview and MP4 frame pacing on longer projects.
|
|
240
|
+
- Add visual canvas controls for FPS, resolution, duration, and aspect ratio.
|
|
241
|
+
- Add image, video, and persistent audio clips to the timeline.
|
|
242
|
+
- Improve existing animation presets and add a small set of distinct transitions.
|
|
243
|
+
- Add more export formats only after MP4 is dependable.
|
|
244
|
+
- Provide a hosted editor/sandbox without removing local or self-hosted use.
|
|
245
|
+
- Explore optional Remotion and Hyperframe support for code-based composition and rendering workflows while keeping `.motion` as the editable source format.
|
|
246
|
+
- Keep BYOK AI drafting optional, local-first, and compatible with external providers.
|
|
247
|
+
|
|
248
|
+
See the [Roadmap](ROADMAP.md) for the planned order of work.
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Architecture
|
|
253
|
+
|
|
254
|
+
```text
|
|
255
|
+
.motion source
|
|
256
|
+
-> parser
|
|
257
|
+
-> AST
|
|
258
|
+
-> scene graph
|
|
259
|
+
-> animation preset compiler
|
|
260
|
+
-> animation evaluator
|
|
261
|
+
-> canvas renderer
|
|
262
|
+
-> preview / export
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Core folders:
|
|
266
|
+
|
|
267
|
+
| Path | Purpose |
|
|
268
|
+
|---|---|
|
|
269
|
+
| `AGENTS.md` | Agent guidance and product boundaries |
|
|
270
|
+
| `.agents/skills/write-motionly` | Reusable agent skill for authoring `.motion` |
|
|
271
|
+
| `src/ui` | Svelte editor and app shell |
|
|
272
|
+
| `src/language` | Tokenizer, parser, AST, and serializer |
|
|
273
|
+
| `src/scene` | Scene graph normalization and layer/camera structure |
|
|
274
|
+
| `src/animation` | Deterministic animation evaluation |
|
|
275
|
+
| `src/animation-library` | Reusable animation presets |
|
|
276
|
+
| `src/render` | Canvas renderer |
|
|
277
|
+
| `src/export` | MP4 and export pipeline |
|
|
278
|
+
| `video-motion` | Sample `.motion` projects and assets |
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Open Source
|
|
283
|
+
|
|
284
|
+
Motionly is licensed under the Apache License 2.0.
|
|
285
|
+
|
|
286
|
+
Project docs:
|
|
287
|
+
|
|
288
|
+
- [Introduction](docs/introduction.mdx)
|
|
289
|
+
- [Quick Start](docs/quickstart.mdx)
|
|
290
|
+
- [Installation](docs/installation.mdx)
|
|
291
|
+
- [User Guide](docs/guides/user-guide.mdx)
|
|
292
|
+
- [UI Guide](docs/editor/ui-guide.mdx)
|
|
293
|
+
- [Motion Language Overview](docs/motion-language/overview.mdx)
|
|
294
|
+
- [Animation Presets](docs/animation/presets.mdx)
|
|
295
|
+
- [Export Overview](docs/export/overview.mdx)
|
|
296
|
+
- [AI Authoring Guide](docs/agents/ai-authoring.mdx)
|
|
297
|
+
- [Contributing](CONTRIBUTING.md)
|
|
298
|
+
- [Code of Conduct](CODE_OF_CONDUCT.md)
|
|
299
|
+
- [Security Policy](SECURITY.md)
|
|
300
|
+
- [Roadmap](ROADMAP.md)
|
|
301
|
+
- [Changelog](CHANGELOG.md)
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Export
|
|
306
|
+
|
|
307
|
+
Motionly currently exposes MP4 export through the editor when the browser supports MP4 `MediaRecorder` output.
|
|
308
|
+
|
|
309
|
+
Known limitations:
|
|
310
|
+
|
|
311
|
+
- Export runs in real time and still needs pacing and reliability improvements.
|
|
312
|
+
- Attached audio is not included yet.
|
|
313
|
+
- Resolution and FPS use the current canvas settings.
|
|
314
|
+
- WebM, GIF, PNG, and image-sequence export are roadmap work.
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## Install from npm
|
|
319
|
+
|
|
320
|
+
Use the public `motionly` package from the npm registry. You do not need to clone this repository or download a tarball. Motionly requires Node.js `20.19.0` or newer.
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
npx motionly init demo
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
For the easiest project setup:
|
|
327
|
+
|
|
328
|
+
1. Enter `2` to install the skills inside the new project.
|
|
329
|
+
2. Enter `1` to install them for all supported agents.
|
|
330
|
+
|
|
331
|
+
The complete terminal session looks like this:
|
|
332
|
+
|
|
333
|
+
```text
|
|
334
|
+
$ npx motionly init demo
|
|
335
|
+
Created /path/to/workspace/demo
|
|
336
|
+
|
|
337
|
+
Install Motionly agent skills?
|
|
338
|
+
1. Skip
|
|
339
|
+
2. Project — inside the new project
|
|
340
|
+
3. Global — every project for this user
|
|
341
|
+
Select [1]: 2
|
|
342
|
+
|
|
343
|
+
Which agents should receive the Motionly skill?
|
|
344
|
+
1. All supported agents
|
|
345
|
+
2. Claude Code
|
|
346
|
+
3. Codex
|
|
347
|
+
4. Gemini CLI
|
|
348
|
+
5. Kiro CLI
|
|
349
|
+
Select [1]: 1
|
|
350
|
+
|
|
351
|
+
Added claude: /path/to/workspace/demo/.claude/skills/motionly/SKILL.md
|
|
352
|
+
Added codex: /path/to/workspace/demo/.agents/skills/motionly/SKILL.md
|
|
353
|
+
Added gemini: /path/to/workspace/demo/.gemini/skills/motionly/SKILL.md
|
|
354
|
+
Added kiro: /path/to/workspace/demo/.kiro/skills/motionly/SKILL.md
|
|
355
|
+
|
|
356
|
+
To reopen later: cd demo && npx motionly dev
|
|
357
|
+
|
|
358
|
+
Motionly is running.
|
|
359
|
+
Open this URL in your browser: http://localhost:4173/editor
|
|
360
|
+
Project: /path/to/workspace/demo
|
|
361
|
+
Press Ctrl+C to stop.
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
Open `http://localhost:4173/editor` in your browser. Keep the terminal running while you edit and
|
|
365
|
+
press `Ctrl+C` when finished.
|
|
366
|
+
|
|
367
|
+
Other wizard choices:
|
|
368
|
+
|
|
369
|
+
- Choose **Skip** to create the project without agent skills.
|
|
370
|
+
- Choose **Global** to make the selected skills available to every project for your user.
|
|
371
|
+
- Choose one agent instead of **All supported agents** if you only use that agent.
|
|
372
|
+
|
|
373
|
+
To install skills without creating a project:
|
|
374
|
+
|
|
375
|
+
```bash
|
|
376
|
+
motionly skills add
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
For scripts and CI, skip the wizard with flags:
|
|
380
|
+
|
|
381
|
+
```bash
|
|
382
|
+
motionly skills add --all --scope project
|
|
383
|
+
motionly skills add --provider codex --scope global
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
Supported provider names are `claude`, `codex`, `gemini`, and `kiro`.
|
|
387
|
+
|
|
388
|
+
### 3. Project layout
|
|
389
|
+
|
|
390
|
+
The project contains:
|
|
391
|
+
|
|
392
|
+
```text
|
|
393
|
+
demo/
|
|
394
|
+
├── AGENTS.md
|
|
395
|
+
├── assets/
|
|
396
|
+
├── project.motion
|
|
397
|
+
├── meta.json
|
|
398
|
+
└── README.md
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
### 4. Reopen the project later
|
|
402
|
+
|
|
403
|
+
```bash
|
|
404
|
+
cd demo
|
|
405
|
+
motionly dev
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
Motionly opens `http://localhost:4173/editor`, loads `project.motion`, serves files from `assets/`, and saves editor changes back to the project. Use `--port <n>` to change the port or `--no-open` to skip opening the browser.
|
|
409
|
+
|
|
410
|
+
### Run without a global installation
|
|
411
|
+
|
|
412
|
+
You can use the public package directly through `npx` instead:
|
|
413
|
+
|
|
414
|
+
```bash
|
|
415
|
+
npx motionly --help
|
|
416
|
+
npx motionly init my-video
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
For the no-setup browser editor:
|
|
420
|
+
|
|
421
|
+
```bash
|
|
422
|
+
npx motionly
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
## Development from source
|
|
426
|
+
|
|
427
|
+
For local development from source:
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
npm install
|
|
431
|
+
npm run dev
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
Open:
|
|
435
|
+
|
|
436
|
+
```text
|
|
437
|
+
http://localhost:5173
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
To serve your own production build locally:
|
|
441
|
+
|
|
442
|
+
```bash
|
|
443
|
+
npm run build
|
|
444
|
+
npm run serve
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
---
|
|
448
|
+
|
|
449
|
+
## Test
|
|
450
|
+
|
|
451
|
+
```bash
|
|
452
|
+
npm test -- --run
|
|
453
|
+
npm run build
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
## Contributing
|
|
460
|
+
|
|
461
|
+
Repository:
|
|
462
|
+
|
|
463
|
+
https://github.com/COPPSARY/Motionly
|
|
464
|
+
|
|
465
|
+
Contribution priorities:
|
|
466
|
+
|
|
467
|
+
1. Improve the visual editor and timeline experience.
|
|
468
|
+
2. Fix preview and MP4 export performance and correctness.
|
|
469
|
+
3. Add focused tests for parser, serialization, presets, editor workflows, and export.
|
|
470
|
+
4. Keep `.motion` examples and implementation files readable.
|
|
471
|
+
5. Avoid large dependencies unless they clearly simplify the core workflow.
|
|
472
|
+
|
|
473
|
+
Before opening a PR:
|
|
474
|
+
|
|
475
|
+
- Run `npm test -- --run`
|
|
476
|
+
- Run `npm run build`
|
|
477
|
+
- Keep `.motion` examples readable
|
|
478
|
+
- Avoid hidden state in rendering
|
|
479
|
+
- Do not mutate imported assets
|
|
480
|
+
- Prefer deterministic frame evaluation over runtime side effects
|
|
481
|
+
|
|
482
|
+
---
|
|
483
|
+
|
|
484
|
+
## Links
|
|
485
|
+
|
|
486
|
+
<div align="center">
|
|
487
|
+
|
|
488
|
+
| Platform | Link |
|
|
489
|
+
|---|---|
|
|
490
|
+
| GitHub | [COPPSARY](https://github.com/COPPSARY) |
|
|
491
|
+
| Facebook | [COPPSARY](https://web.facebook.com/profile.php?id=61567582710788) |
|
|
492
|
+
|
|
493
|
+
</div>
|
|
494
|
+
|
|
495
|
+
---
|
|
496
|
+
|
|
497
|
+
<div align="center">
|
|
498
|
+
<p><em>Effortless Animation</em></p>
|
|
499
|
+
</div>
|