motionrender 0.2.1 → 0.2.3

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.
Files changed (69) hide show
  1. package/dist/cli.js +2872 -582
  2. package/dist/index.js +270 -43
  3. package/dist/player.js +13 -13
  4. package/dist/react.js +704 -9
  5. package/dist/types/packages/ai/src/agent.d.ts +57 -0
  6. package/dist/types/packages/ai/src/brand-scraper.d.ts +35 -0
  7. package/dist/types/packages/ai/src/captions.d.ts +11 -0
  8. package/dist/types/packages/ai/src/compose.d.ts +2 -0
  9. package/dist/types/packages/ai/src/edit.d.ts +69 -0
  10. package/dist/types/packages/ai/src/index.d.ts +8 -1
  11. package/dist/types/packages/ai/src/plan.d.ts +42 -0
  12. package/dist/types/packages/ai/src/prompt.d.ts +18 -0
  13. package/dist/types/packages/ai/src/providers.d.ts +35 -2
  14. package/dist/types/packages/ai/src/registry.d.ts +81 -0
  15. package/dist/types/packages/ai/src/retime.d.ts +7 -0
  16. package/dist/types/packages/ai/src/shorts.d.ts +75 -0
  17. package/dist/types/packages/cli/src/agent-cli.d.ts +15 -0
  18. package/dist/types/packages/cli/src/ai-studio-page.d.ts +1 -1
  19. package/dist/types/packages/cli/src/ai.d.ts +1 -1
  20. package/dist/types/packages/cli/src/build.d.ts +2 -0
  21. package/dist/types/packages/cli/src/templates.d.ts +13 -4
  22. package/dist/types/packages/contracts/src/index.d.ts +12 -12
  23. package/dist/types/packages/core/src/index.d.ts +2 -2
  24. package/dist/types/packages/core/src/review.d.ts +24 -0
  25. package/dist/types/packages/ffmpeg/src/auto-install.d.ts +12 -0
  26. package/dist/types/packages/ffmpeg/src/index.d.ts +2 -0
  27. package/dist/types/packages/jobs/src/queue.d.ts +2 -2
  28. package/dist/types/packages/jobs/src/redis.d.ts +2 -2
  29. package/dist/types/packages/react/src/components.d.ts +166 -0
  30. package/dist/types/packages/react/src/index.d.ts +54 -2
  31. package/dist/types/packages/react/src/springs.d.ts +25 -0
  32. package/dist/types/packages/renderer/src/index.d.ts +3 -0
  33. package/dist/types/packages/schema/src/captions.d.ts +2 -0
  34. package/dist/types/packages/schema/src/index.d.ts +66 -66
  35. package/dist/types/scripts/eval-briefs.d.ts +67 -0
  36. package/package.json +1 -1
  37. package/skills/ove/SKILL.md +40 -2
  38. package/skills/ove-agent/SKILL.md +144 -0
  39. package/skills/ove-code-video/SKILL.md +17 -9
  40. package/skills/ove-motion-graphics/SKILL.md +113 -0
  41. package/skills/ove-react-video/SKILL.md +212 -0
  42. package/skills/ove-remotion/SKILL.md +122 -0
  43. package/studio/assets/index-DmZj9wTZ.css +1 -0
  44. package/studio/assets/index-n3DJI_GV.js +10 -0
  45. package/studio/index.html +2 -2
  46. package/templates/case-study/composition.json +25 -10
  47. package/templates/event-invite/composition.json +12 -2
  48. package/templates/explainer-square/composition.json +1 -1
  49. package/templates/keynote-wide/composition.json +2 -2
  50. package/templates/kinetic-reel/composition.json +73 -0
  51. package/templates/kinetic-reel/composition.schema.json +9295 -0
  52. package/templates/kinetic-reel/template.json +17 -0
  53. package/templates/kinetic-reel/video.bundle.js +72 -0
  54. package/templates/kinetic-reel/video.tsx +283 -0
  55. package/templates/product-card/composition.json +7 -2
  56. package/templates/product-wide/composition.json +1 -1
  57. package/templates/quote-card/composition.json +6 -1
  58. package/templates/saas-launch/composition.json +70 -0
  59. package/templates/saas-launch/composition.schema.json +9295 -0
  60. package/templates/saas-launch/template.json +16 -0
  61. package/templates/saas-launch/video.bundle.js +72 -0
  62. package/templates/saas-launch/video.tsx +217 -0
  63. package/templates/sale-promo/composition.json +16 -1
  64. package/templates/showcase-tall/composition.json +4 -4
  65. package/templates/slideshow/composition.json +1 -1
  66. package/templates/social-reel/composition.json +19 -4
  67. package/templates/story-tall/composition.json +1 -1
  68. package/studio/assets/index-CzOvWv9w.css +0 -1
  69. package/studio/assets/index-J_fvKgng.js +0 -11
package/studio/index.html CHANGED
@@ -7,8 +7,8 @@
7
7
  <script>try{var t=localStorage.getItem('ove-theme')||'dark';if(t==='system')t=matchMedia('(prefers-color-scheme: light)').matches?'light':'dark';document.documentElement.dataset.theme=t}catch(e){document.documentElement.dataset.theme='dark'}</script>
8
8
  <title>OVE AI studio</title>
9
9
  <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 3 22 21H2z' fill='%23ededed'/%3E%3C/svg%3E" />
10
- <script type="module" crossorigin src="/assets/index-J_fvKgng.js"></script>
11
- <link rel="stylesheet" crossorigin href="/assets/index-CzOvWv9w.css">
10
+ <script type="module" crossorigin src="/assets/index-n3DJI_GV.js"></script>
11
+ <link rel="stylesheet" crossorigin href="/assets/index-DmZj9wTZ.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="root"></div>
@@ -38,6 +38,11 @@
38
38
  "name": "Client and promise",
39
39
  "startFrame": 0,
40
40
  "durationFrames": 180,
41
+ "camera": {
42
+ "animations": [
43
+ { "property": "zoom", "keyframes": [{ "frame": 0, "value": 1 }, { "frame": 180, "value": 1.08, "easing": "drift" }] }
44
+ ]
45
+ },
41
46
  "transitionIn": { "type": "fade", "durationFrames": 12 },
42
47
  "transitionOut": { "type": "fade", "durationFrames": 12 },
43
48
  "layers": [
@@ -132,6 +137,11 @@
132
137
  "name": "Results",
133
138
  "startFrame": 180,
134
139
  "durationFrames": 240,
140
+ "camera": {
141
+ "animations": [
142
+ { "property": "zoom", "keyframes": [{ "frame": 0, "value": 1 }, { "frame": 240, "value": 1.08, "easing": "drift" }] }
143
+ ]
144
+ },
135
145
  "transitionIn": { "type": "slide", "direction": "left", "durationFrames": 18 },
136
146
  "transitionOut": { "type": "fade", "durationFrames": 12 },
137
147
  "layers": [
@@ -194,13 +204,13 @@
194
204
  "type": "text",
195
205
  "content": "{{stat2}}",
196
206
  "x": 730,
197
- "y": 330,
198
- "fontSize": 150,
207
+ "y": 384,
208
+ "fontSize": 60,
199
209
  "fontWeight": 800,
200
- "letterSpacing": -6,
210
+ "letterSpacing": -3,
201
211
  "maxWidth": 520,
202
212
  "maxLines": 1,
203
- "minFontSize": 86,
213
+ "minFontSize": 40,
204
214
  "color": "#ecfdf5",
205
215
  "animations": [
206
216
  { "property": "opacity", "keyframes": [{ "frame": 28, "value": 0 }, { "frame": 48, "value": 1 }] },
@@ -227,13 +237,13 @@
227
237
  "type": "text",
228
238
  "content": "{{stat3}}",
229
239
  "x": 1310,
230
- "y": 330,
231
- "fontSize": 150,
240
+ "y": 384,
241
+ "fontSize": 60,
232
242
  "fontWeight": 800,
233
- "letterSpacing": -6,
243
+ "letterSpacing": -3,
234
244
  "maxWidth": 520,
235
245
  "maxLines": 1,
236
- "minFontSize": 86,
246
+ "minFontSize": 40,
237
247
  "color": "#ecfdf5",
238
248
  "animations": [
239
249
  { "property": "opacity", "keyframes": [{ "frame": 42, "value": 0 }, { "frame": 62, "value": 1 }] },
@@ -271,6 +281,11 @@
271
281
  "name": "Quote",
272
282
  "startFrame": 420,
273
283
  "durationFrames": 180,
284
+ "camera": {
285
+ "animations": [
286
+ { "property": "zoom", "keyframes": [{ "frame": 0, "value": 1 }, { "frame": 180, "value": 1.08, "easing": "drift" }] }
287
+ ]
288
+ },
274
289
  "transitionIn": { "type": "fade", "durationFrames": 14 },
275
290
  "transitionOut": { "type": "fade", "durationFrames": 12 },
276
291
  "layers": [
@@ -320,7 +335,7 @@
320
335
  "content": "{{quoteBy}}",
321
336
  "x": 150,
322
337
  "y": 760,
323
- "fontSize": 34,
338
+ "fontSize": 40,
324
339
  "fontWeight": 600,
325
340
  "maxWidth": 900,
326
341
  "maxLines": 1,
@@ -335,7 +350,7 @@
335
350
  "content": "{{cta}} →",
336
351
  "x": 150,
337
352
  "y": 860,
338
- "fontSize": 38,
353
+ "fontSize": 40,
339
354
  "fontWeight": 700,
340
355
  "color": "#d1fae5",
341
356
  "animations": [
@@ -32,6 +32,11 @@
32
32
  "name": "Invitation",
33
33
  "startFrame": 0,
34
34
  "durationFrames": 240,
35
+ "camera": {
36
+ "animations": [
37
+ { "property": "zoom", "keyframes": [{ "frame": 0, "value": 1 }, { "frame": 240, "value": 1.08, "easing": "drift" }] }
38
+ ]
39
+ },
35
40
  "transitionIn": { "type": "fade", "durationFrames": 12 },
36
41
  "transitionOut": { "type": "fade", "durationFrames": 12 },
37
42
  "layers": [
@@ -134,7 +139,7 @@
134
139
  "content": "{{detail}}",
135
140
  "x": 92,
136
141
  "y": 1050,
137
- "fontSize": 32,
142
+ "fontSize": 34,
138
143
  "lineHeight": 1.5,
139
144
  "maxWidth": 820,
140
145
  "maxLines": 4,
@@ -162,6 +167,11 @@
162
167
  "name": "Save your seat",
163
168
  "startFrame": 240,
164
169
  "durationFrames": 120,
170
+ "camera": {
171
+ "animations": [
172
+ { "property": "zoom", "keyframes": [{ "frame": 0, "value": 1 }, { "frame": 120, "value": 1.08, "easing": "drift" }] }
173
+ ]
174
+ },
165
175
  "transitionIn": { "type": "zoom", "durationFrames": 16 },
166
176
  "transitionOut": { "type": "fade", "durationFrames": 12 },
167
177
  "layers": [
@@ -233,7 +243,7 @@
233
243
  "content": "{{place}}",
234
244
  "x": 540,
235
245
  "y": 970,
236
- "fontSize": 30,
246
+ "fontSize": 28,
237
247
  "textAlign": "center",
238
248
  "maxWidth": 820,
239
249
  "maxLines": 2,
@@ -1040,7 +1040,7 @@
1040
1040
  "id": "v-{{index}}",
1041
1041
  "type": "text",
1042
1042
  "content": "{{st.value}}",
1043
- "fontSize": "{{round(min(min(canvas.width, canvas.height) * 0.08, (canvas.width * 0.84 / max(count, 1) - min(canvas.width, canvas.height) * 0.04) * 0.3))}}",
1043
+ "fontSize": "{{round(min(min(canvas.width, canvas.height) * 0.0575, (canvas.width * 0.84 / max(count, 1) - min(canvas.width, canvas.height) * 0.04) * 0.3))}}",
1044
1044
  "color": "{{accent}}",
1045
1045
  "fontWeight": 900,
1046
1046
  "maxWidth": "{{round(canvas.width * 0.84 / max(count, 1) - min(canvas.width, canvas.height) * 0.04)}}",
@@ -665,7 +665,7 @@
665
665
  "id": "quote",
666
666
  "type": "text",
667
667
  "content": "{{quote}}",
668
- "fontSize": "{{round(min(canvas.width, canvas.height) * 0.06)}}",
668
+ "fontSize": "{{round(min(canvas.width, canvas.height) * 0.0667)}}",
669
669
  "color": "{{text}}",
670
670
  "fontWeight": 700,
671
671
  "lineHeight": 1.15,
@@ -1163,7 +1163,7 @@
1163
1163
  "id": "v-{{index}}",
1164
1164
  "type": "text",
1165
1165
  "content": "{{st.value}}",
1166
- "fontSize": "{{round(min(min(canvas.width, canvas.height) * 0.08, (canvas.width * 0.84 / max(count, 1) - min(canvas.width, canvas.height) * 0.04) * 0.3))}}",
1166
+ "fontSize": "{{round(min(min(canvas.width, canvas.height) * 0.0575, (canvas.width * 0.84 / max(count, 1) - min(canvas.width, canvas.height) * 0.04) * 0.3))}}",
1167
1167
  "color": "{{accent}}",
1168
1168
  "fontWeight": 900,
1169
1169
  "maxWidth": "{{round(canvas.width * 0.84 / max(count, 1) - min(canvas.width, canvas.height) * 0.04)}}",
@@ -0,0 +1,73 @@
1
+ {
2
+ "$schema": "./composition.schema.json",
3
+ "version": "1.0",
4
+ "id": "kinetic-reel",
5
+ "name": "Viral Motion Graphics Reel (9:16)",
6
+ "width": 1080,
7
+ "height": 1920,
8
+ "fps": 30,
9
+ "durationFrames": 180,
10
+ "background": "#070a12",
11
+ "scenes": [
12
+ {
13
+ "id": "main",
14
+ "name": "Main",
15
+ "startFrame": 0,
16
+ "durationFrames": 180,
17
+ "layers": [
18
+ {
19
+ "id": "react",
20
+ "type": "react",
21
+ "src": "video.bundle.js",
22
+ "width": 1080,
23
+ "height": 1920,
24
+ "durationInFrames": 180,
25
+ "props": {
26
+ "kicker": "CLAUDE MOTION GRAPHICS",
27
+ "headline": "Stop Making Boring Videos",
28
+ "subtitle": "Code-driven motion graphics with real spring physics, glassmorphism, and instant rendering.",
29
+ "metric": 10,
30
+ "metricUnit": "x",
31
+ "metricLabel": "Higher Audience Retention",
32
+ "codeSnippet": "const reel = await ove.render();",
33
+ "ctaText": "Start Building in React",
34
+ "handle": "@openvideo.dev"
35
+ }
36
+ },
37
+ {
38
+ "id": "audio-1",
39
+ "type": "audio",
40
+ "startFrame": 0,
41
+ "endFrame": 65,
42
+ "src": "sfx:whoosh",
43
+ "trimStart": 0,
44
+ "volume": 0.65,
45
+ "playbackRate": 1,
46
+ "loop": false
47
+ },
48
+ {
49
+ "id": "audio-2",
50
+ "type": "audio",
51
+ "startFrame": 65,
52
+ "endFrame": 125,
53
+ "src": "sfx:pop",
54
+ "trimStart": 0,
55
+ "volume": 0.6,
56
+ "playbackRate": 1,
57
+ "loop": false
58
+ },
59
+ {
60
+ "id": "audio-3",
61
+ "type": "audio",
62
+ "startFrame": 125,
63
+ "endFrame": 180,
64
+ "src": "sfx:ding",
65
+ "trimStart": 0,
66
+ "volume": 0.65,
67
+ "playbackRate": 1,
68
+ "loop": false
69
+ }
70
+ ]
71
+ }
72
+ ]
73
+ }