@indreamai/openclaw-plugin 0.1.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.
Files changed (31) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +6 -0
  3. package/dist/chunk-ENGUNMFI.js +196 -0
  4. package/dist/index.d.ts +11 -0
  5. package/dist/index.js +781 -0
  6. package/dist/setup-entry.d.ts +11 -0
  7. package/dist/setup-entry.js +20 -0
  8. package/openclaw.plugin.json +98 -0
  9. package/package.json +58 -0
  10. package/skills/indream-editor-json/SKILL.md +157 -0
  11. package/skills/indream-editor-json/references/asset-mapping.md +147 -0
  12. package/skills/indream-editor-json/references/common-items.md +280 -0
  13. package/skills/indream-editor-json/references/editor-state.v1.schema.json +1491 -0
  14. package/skills/indream-editor-json/references/keyframes.md +102 -0
  15. package/skills/indream-editor-json/references/material-libraries.md +97 -0
  16. package/skills/indream-editor-json/references/minimal-editor-state.json +36 -0
  17. package/skills/indream-editor-json/references/motion-effects-and-transitions.md +235 -0
  18. package/skills/indream-editor-json/references/recipes.md +122 -0
  19. package/skills/indream-editor-json/references/structure-and-principles.md +159 -0
  20. package/skills/indream-editor-json/references/template-catalog.md +45 -0
  21. package/skills/indream-editor-json/references/templates/chart-showcase.json +654 -0
  22. package/skills/indream-editor-json/references/templates/gallery-carousel.json +538 -0
  23. package/skills/indream-editor-json/references/templates/hello-world.json +212 -0
  24. package/skills/indream-editor-json/references/templates/illustration-board.json +480 -0
  25. package/skills/indream-editor-json/references/templates/keyframe-motion-lab.json +362 -0
  26. package/skills/indream-editor-json/references/templates/product-intro.json +614 -0
  27. package/skills/indream-editor-json/references/templates/subtitle-promo.json +341 -0
  28. package/skills/indream-editor-json/references/text-and-captions.md +211 -0
  29. package/skills/indream-editor-json/references/validation-repair.md +134 -0
  30. package/skills/indream-render-workflow/SKILL.md +57 -0
  31. package/skills/indream-render-workflow/references/workflow.md +19 -0
@@ -0,0 +1,102 @@
1
+ # Adding Keyframes
2
+
3
+ ## Mental model
4
+
5
+ Animated number tracks always use:
6
+
7
+ ```json
8
+ {
9
+ "value": 120,
10
+ "keyframes": []
11
+ }
12
+ ```
13
+
14
+ - `value` is the base value the item rests on
15
+ - `keyframes` inject time-based overrides
16
+
17
+ ## Single-keyframe rule of thumb
18
+
19
+ If the item should end at one stable value but begin from another value, a single keyframe is often enough.
20
+
21
+ Example:
22
+
23
+ ```json
24
+ {
25
+ "left": {
26
+ "value": 120,
27
+ "keyframes": [
28
+ { "timeTicks": 0, "value": -220 }
29
+ ]
30
+ }
31
+ }
32
+ ```
33
+
34
+ Interpretation:
35
+
36
+ - at the start of the clip, the item begins off-screen at `-220`
37
+ - it settles to the base `value` of `120`
38
+
39
+ This is the cleanest way to add one entrance keyframe without redesigning the whole item.
40
+
41
+ ## Common single-keyframe patterns
42
+
43
+ ### One entrance move
44
+
45
+ ```json
46
+ {
47
+ "top": {
48
+ "value": 280,
49
+ "keyframes": [
50
+ { "timeTicks": 0, "value": 360 }
51
+ ]
52
+ }
53
+ }
54
+ ```
55
+
56
+ ### One entrance scale pop
57
+
58
+ ```json
59
+ {
60
+ "scaleX": {
61
+ "value": 1,
62
+ "keyframes": [
63
+ { "timeTicks": 0, "value": 0.7 }
64
+ ]
65
+ },
66
+ "scaleY": {
67
+ "value": 1,
68
+ "keyframes": [
69
+ { "timeTicks": 0, "value": 0.7 }
70
+ ]
71
+ }
72
+ }
73
+ ```
74
+
75
+ ### One fade-out target
76
+
77
+ ```json
78
+ {
79
+ "opacity": {
80
+ "value": 0,
81
+ "keyframes": [
82
+ { "timeTicks": 0, "value": 1 }
83
+ ]
84
+ }
85
+ }
86
+ ```
87
+
88
+ ## When to use two or more keyframes instead
89
+
90
+ Use more than one keyframe when the item needs:
91
+
92
+ - a hold before movement starts
93
+ - multiple motion phases
94
+ - a bounce or overshoot
95
+ - a mid-clip change instead of a simple start-to-rest interpolation
96
+
97
+ ## Keyframe authoring rules
98
+
99
+ - keep `timeTicks` inside the item duration
100
+ - add keyframes to only the properties that need motion
101
+ - prefer one property change at a time when debugging
102
+ - if the motion is just a simple entry or exit, compare whether a clip animation would be cleaner than custom keyframes
@@ -0,0 +1,97 @@
1
+ # Material Libraries and Sticker Compatibility
2
+
3
+ ## Hand-drawn vector material library
4
+
5
+ The safest Open API representation for the hand-drawn vector material library is the `illustration` item.
6
+
7
+ Use it when the user wants:
8
+
9
+ - playful SVG-like artwork
10
+ - decorative vector accents
11
+ - product-friendly hand-drawn scenes
12
+ - explainer or infographic support art
13
+
14
+ Required fields:
15
+
16
+ - `type: "illustration"`
17
+ - `illustrationName`
18
+ - `color`
19
+ - `keepAspectRatio`
20
+ - `rotation`
21
+ - full base geometry fields
22
+
23
+ Always choose `illustrationName` from `indream_editor_capabilities`.
24
+
25
+ ## Useful illustration categories
26
+
27
+ The live illustration library is large.
28
+ Use a small curated subset unless the user explicitly asks for a specific name.
29
+
30
+ Good examples from the live capability set:
31
+
32
+ - Greeting and welcome:
33
+ - `IHello`
34
+ - `IWelcome`
35
+ - `IWelcomeAboard`
36
+ - Product and launch:
37
+ - `IProductDemo`
38
+ - `IProductExplainer`
39
+ - `ILaunchDay`
40
+ - `ILaunchEvent`
41
+ - Charts and analytics:
42
+ - `ICharts`
43
+ - `IGrowthChart`
44
+ - `IDataAnalysis`
45
+ - `IAnalytics`
46
+ - Content and media:
47
+ - `IContentCreator`
48
+ - `IVideoTutorial`
49
+ - `IOnlineVideo`
50
+
51
+ ## Sticker support in the current Open API
52
+
53
+ Sticker support exists, but it is not fully symmetrical across the editor runtime and the open API schema.
54
+
55
+ Current compatibility facts:
56
+
57
+ - the current open API schema exposes `stickerId` and `stickerVersion` on `image` items
58
+ - the editor runtime also carries sticker metadata on `lottie` items in some internal flows
59
+ - the current open API capabilities payload does not expose a sticker catalog or importable sticker definitions
60
+
61
+ That means you should not invent sticker identifiers.
62
+
63
+ ## Safe sticker authoring rules
64
+
65
+ Only add `stickerId` and `stickerVersion` when one of these is true:
66
+
67
+ - the values come from an existing editor draft
68
+ - the values come from an internal sticker import flow
69
+ - the user explicitly supplied known-good sticker metadata
70
+
71
+ If none of that is available, use one of these safe fallbacks instead:
72
+
73
+ - a normal `image` item for a static sticker-like badge
74
+ - a `lottie` item for an animated badge
75
+ - an `illustration` item for a curated vector decoration
76
+
77
+ ## Open API-safe fallback patterns
78
+
79
+ ### Static sticker-like badge
80
+
81
+ Use an `image` item backed by a transparent PNG asset.
82
+ Do not attach fake sticker metadata.
83
+
84
+ ### Animated sticker-like badge
85
+
86
+ Use a `lottie` item backed by a real lottie asset.
87
+ Do not attach sticker metadata unless it came from a trusted source.
88
+
89
+ ### Library illustration
90
+
91
+ Use an `illustration` item when the user wants decorative hand-drawn art and no specific sticker catalog entry is required.
92
+
93
+ ## Practical guidance for the skill
94
+
95
+ - Prefer `illustration` for reusable hand-drawn vector art.
96
+ - Prefer uploaded image overlays for portable sticker-like decorations.
97
+ - Treat real sticker metadata as compatibility-sensitive and source-dependent.
@@ -0,0 +1,36 @@
1
+ {
2
+ "compositionWidth": 1920,
3
+ "compositionHeight": 1080,
4
+ "timebaseTicksPerSecond": 240000,
5
+ "tracks": [
6
+ {
7
+ "id": "track-1",
8
+ "hidden": false,
9
+ "muted": false,
10
+ "items": ["item-solid-1"]
11
+ }
12
+ ],
13
+ "assets": {},
14
+ "items": {
15
+ "item-solid-1": {
16
+ "id": "item-solid-1",
17
+ "type": "solid",
18
+ "color": "#111827",
19
+ "shape": "rectangle",
20
+ "startTicks": 0,
21
+ "durationTicks": 240000,
22
+ "top": { "value": 0, "keyframes": [] },
23
+ "left": { "value": 0, "keyframes": [] },
24
+ "width": { "value": 1920, "keyframes": [] },
25
+ "height": { "value": 1080, "keyframes": [] },
26
+ "scaleX": { "value": 1, "keyframes": [] },
27
+ "scaleY": { "value": 1, "keyframes": [] },
28
+ "opacity": { "value": 1, "keyframes": [] },
29
+ "isDraggingInTimeline": false,
30
+ "borderRadius": { "value": 0, "keyframes": [] },
31
+ "rotation": { "value": 0, "keyframes": [] },
32
+ "keepAspectRatio": false
33
+ }
34
+ },
35
+ "transitions": {}
36
+ }
@@ -0,0 +1,235 @@
1
+ # Motion, Effects, Filters, and Transitions
2
+
3
+ ## Clip animations
4
+
5
+ Many visual items can use clip-level `animations` with `in` and `out` keys.
6
+
7
+ Supported animation types:
8
+
9
+ - `fade`
10
+ - `slide-up`
11
+ - `slide-down`
12
+ - `slide-left`
13
+ - `slide-right`
14
+ - `zoom-in`
15
+ - `zoom-out`
16
+
17
+ Animation shape:
18
+
19
+ ```json
20
+ {
21
+ "type": "fade",
22
+ "durationTicks": 24,
23
+ "easing": "ease-in-out"
24
+ }
25
+ ```
26
+
27
+ Supported easing values:
28
+
29
+ - `linear`
30
+ - `ease-in`
31
+ - `ease-out`
32
+ - `ease-in-out`
33
+
34
+ Use clip animations for:
35
+
36
+ - scene entrance or exit
37
+ - lower-third fly-ins
38
+ - logo pop-ins
39
+ - image or product zooms
40
+
41
+ ## Keyframed motion
42
+
43
+ Use animated number tracks when the user needs motion that clip animations cannot express cleanly, such as:
44
+
45
+ - moving an item across the screen
46
+ - scaling over time
47
+ - opacity ramps
48
+ - subtle rotation
49
+
50
+ Example:
51
+
52
+ ```json
53
+ {
54
+ "left": {
55
+ "value": 120,
56
+ "keyframes": [
57
+ { "timeTicks": 0, "value": -160 },
58
+ { "timeTicks": 24, "value": 120 }
59
+ ]
60
+ }
61
+ }
62
+ ```
63
+
64
+ Practical rules:
65
+
66
+ - Keep keyframe times within the item's duration window.
67
+ - Use a small number of keyframes unless the motion genuinely needs more.
68
+ - Prefer clip animations for simple in or out motion, and keyframes for custom paths or multi-stage motion.
69
+
70
+ ## Caption animations
71
+
72
+ `text` and `captions` items support `captionAnimations` with `in`, `out`, and `loop`.
73
+
74
+ Supported animation names:
75
+
76
+ - `converge`
77
+ - `elastic-pop`
78
+ - `typewriter`
79
+ - `lay-down`
80
+ - `center-type-out`
81
+ - `curtain-close`
82
+ - `jitter`
83
+ - `rainbow`
84
+ - `sweep-shine`
85
+
86
+ Suggested usage:
87
+
88
+ - `in` for entry emphasis
89
+ - `loop` for ongoing energy on short social clips
90
+ - `out` for final subtitle departure
91
+ - For `captions` items, use one short `in` animation as the production-safe default, then add `loop` or `out` only after a real export probe.
92
+
93
+ Avoid long looping animations on dense subtitle tracks unless the user explicitly wants a high-energy style.
94
+
95
+ ## Effects
96
+
97
+ Effect items are time-ranged overlays.
98
+
99
+ Supported schema effect types:
100
+
101
+ - `flash-to-black`
102
+ - `blur`
103
+ - `blurred-opening`
104
+ - `fade-in`
105
+ - `fade-out`
106
+
107
+ Use effects for:
108
+
109
+ - opening blur reveals
110
+ - emphasis moments
111
+ - flash punctuation
112
+ - brief visual bridges between scenes
113
+
114
+ ## Filters
115
+
116
+ Filter items are time-ranged look treatments.
117
+
118
+ Supported schema filter types:
119
+
120
+ - `verdant-glow`
121
+ - `cyberpunk-neon`
122
+ - `vaporwave-blue`
123
+ - `sunset-orange`
124
+ - `lemon-cyan`
125
+ - `absolute-red`
126
+ - `sakura-pink`
127
+ - `twilight-dusk`
128
+
129
+ Use filters for:
130
+
131
+ - full-scene color treatment
132
+ - short stylized moments
133
+ - look changes that should not affect the whole timeline
134
+
135
+ `params.blend` is a common example for partial application, but only use additional params that the product actually supports.
136
+
137
+ ## Transitions
138
+
139
+ Transitions connect two adjacent clips on the same track.
140
+
141
+ Required fields:
142
+
143
+ - `id`
144
+ - `trackId`
145
+ - `fromClipId`
146
+ - `toClipId`
147
+ - `type`
148
+ - `durationTicks`
149
+
150
+ Supported transition types:
151
+
152
+ - `fade`
153
+ - `slide`
154
+ - `wipe`
155
+ - `flip`
156
+ - `clock-wipe`
157
+ - `iris`
158
+
159
+ Useful live parameter patterns:
160
+
161
+ - `slide` with `params.direction`:
162
+ - `from-left`
163
+ - `from-right`
164
+ - `from-top`
165
+ - `from-bottom`
166
+ - `wipe` with `params.direction`:
167
+ - `from-left`
168
+ - `from-top-left`
169
+ - `from-top`
170
+ - `from-top-right`
171
+ - `from-right`
172
+ - `from-bottom-right`
173
+ - `from-bottom`
174
+ - `from-bottom-left`
175
+ - `flip` with `params.direction`:
176
+ - `from-left`
177
+ - `from-right`
178
+ - `from-top`
179
+ - `from-bottom`
180
+
181
+ Common optional fields:
182
+
183
+ - `easing`
184
+ - `params`
185
+
186
+ Transition rules:
187
+
188
+ - only use transitions between neighboring clips in one `track.items[]`
189
+ - do not span clips on different tracks
190
+ - do not use transitions as a replacement for effect items
191
+ - do not add transitions when the edit is a hard cut unless the user asked for a transition
192
+
193
+ ## Motion design guidelines
194
+
195
+ ### Conservative commercial style
196
+
197
+ Use:
198
+
199
+ - one transition family
200
+ - light fade or slide-in clip animations
201
+ - no more than one persistent filter style
202
+ - limited caption animation
203
+
204
+ ### Flashy social short
205
+
206
+ Use:
207
+
208
+ - stronger caption animation
209
+ - punchy transition choices
210
+ - selective filters on highlight moments
211
+ - fast but readable motion on text and stickers
212
+
213
+ ### Tutorial or explainer
214
+
215
+ Use:
216
+
217
+ - minimal transitions
218
+ - consistent lower-third motion
219
+ - stable subtitles
220
+ - clear chart or annotation animation
221
+
222
+ ## Live defaults worth reusing
223
+
224
+ Real capability responses currently expose useful defaults that are safe to mirror:
225
+
226
+ - `blurred-opening` effect often uses `params.maxBlurPx: 24`
227
+ - `flash-to-black` effect may use:
228
+ - `brightFrames`
229
+ - `darkFrames`
230
+ - `maxOpacity`
231
+ - `tailDarkFrames`
232
+ - filters commonly expose a `blend` value in `params`
233
+
234
+ Use these only when they match the user's intent.
235
+ Do not add extra params blindly when a simpler default gets the job done.
@@ -0,0 +1,122 @@
1
+ # Practical Recipes
2
+
3
+ Use these as planning patterns, not as rigid templates.
4
+
5
+ ## Recipe: sequential slideshow with transitions
6
+
7
+ Use when the user wants:
8
+
9
+ - multiple still images
10
+ - one after another
11
+ - gentle scene changes
12
+
13
+ Recommended structure:
14
+
15
+ - one visual track with back-to-back image or solid items
16
+ - transitions between each adjacent pair
17
+ - optional text overlay track for titles
18
+
19
+ Recommended motion:
20
+
21
+ - subtle `fade` or `zoom-in` clip animation
22
+ - `fade` transition unless the user wants a stronger effect
23
+
24
+ ## Recipe: talking-head short with subtitles
25
+
26
+ Use when the user wants:
27
+
28
+ - primary video
29
+ - styled subtitles
30
+ - optional title and CTA overlays
31
+
32
+ Recommended structure:
33
+
34
+ - one track for the main `video` item
35
+ - one track for a `captions` item
36
+ - optional overlay track for title card or end card
37
+ - optional `audio` item for background music
38
+
39
+ Recommended motion:
40
+
41
+ - minimal clip animation on the main video
42
+ - one readable subtitle style
43
+ - optional `captionAnimations.in` for energy
44
+
45
+ ## Recipe: product promo with layered visuals
46
+
47
+ Use when the user wants:
48
+
49
+ - a hero image or video
50
+ - decorative shapes
51
+ - motion callouts
52
+ - logo or feature badges
53
+
54
+ Recommended structure:
55
+
56
+ - main media track
57
+ - one overlay track for `solid` and `illustration` items
58
+ - one overlay track for `text` items
59
+ - optional filter or effect items for emphasis windows
60
+
61
+ Recommended motion:
62
+
63
+ - slide or zoom clip animations on text and badges
64
+ - keyframed movement for callout entrances
65
+ - transitions only between major scene changes
66
+
67
+ ## Recipe: text-only kinetic promo
68
+
69
+ Use when the user wants:
70
+
71
+ - no footage
72
+ - bold text-driven storytelling
73
+ - heavy subtitle-like motion
74
+
75
+ Recommended structure:
76
+
77
+ - `solid` background item or `globalBackground`
78
+ - multiple `text` items on one or more tracks
79
+ - optional `illustration` or `chart` items
80
+
81
+ Recommended motion:
82
+
83
+ - `captionAnimations` on headline text
84
+ - keyframed position and opacity for custom pacing
85
+ - occasional effect windows for emphasis
86
+
87
+ ## Recipe: clean data slide
88
+
89
+ Use when the user wants:
90
+
91
+ - business metrics
92
+ - clean title and body copy
93
+ - consistent visual colors
94
+
95
+ Recommended structure:
96
+
97
+ - background `solid` or `globalBackground`
98
+ - one `chart` item
99
+ - one or more `text` items
100
+ - optional `illustration` item
101
+
102
+ Recommended motion:
103
+
104
+ - modest clip animation on chart and title
105
+ - avoid flashy caption animation unless the visual tone allows it
106
+
107
+ ## Recipe: template-driven cover
108
+
109
+ Use when the user wants:
110
+
111
+ - a known reusable template
112
+ - exact template-driven nodes
113
+
114
+ Recommended structure:
115
+
116
+ - one `text-template` item with validated `nodes`
117
+ - optional supporting tracks for extra text or stickers if the product supports them
118
+
119
+ Important:
120
+
121
+ - only use this recipe when the template contract is known
122
+ - otherwise fall back to standard `text`, `image`, and `solid` items