mulmocast 2.1.40 → 2.2.1

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 (64) hide show
  1. package/README.md +1 -1
  2. package/assets/schemas/html_prompt.json +60 -0
  3. package/assets/schemas/mulmo_script.json +283 -0
  4. package/assets/slide_themes/corporate.json +18 -0
  5. package/assets/slide_themes/creative.json +18 -0
  6. package/assets/slide_themes/dark.json +18 -0
  7. package/assets/slide_themes/minimal.json +18 -0
  8. package/assets/slide_themes/pop.json +18 -0
  9. package/assets/slide_themes/warm.json +18 -0
  10. package/assets/styles/akira_comic.json +22 -0
  11. package/assets/styles/ani.json +43 -0
  12. package/assets/styles/children_book.json +13 -0
  13. package/assets/styles/comic_strips.json +13 -0
  14. package/assets/styles/drslump_comic.json +22 -0
  15. package/assets/styles/ghibli_comic.json +22 -0
  16. package/assets/styles/ghibli_shorts.json +28 -0
  17. package/assets/styles/ghost_comic.json +29 -0
  18. package/assets/styles/leda.json +29 -0
  19. package/assets/styles/onepiece_comic.json +22 -0
  20. package/assets/styles/slide_corporate.json +30 -0
  21. package/assets/styles/slide_creative.json +30 -0
  22. package/assets/styles/slide_dark.json +30 -0
  23. package/assets/styles/slide_minimal.json +30 -0
  24. package/assets/styles/slide_pop.json +30 -0
  25. package/assets/styles/slide_warm.json +30 -0
  26. package/lib/actions/image_agents.d.ts +2 -1
  27. package/lib/actions/image_agents.js +3 -3
  28. package/lib/actions/images.d.ts +3 -1
  29. package/lib/actions/images.js +1 -0
  30. package/lib/data/index.d.ts +2 -0
  31. package/lib/data/index.js +2 -0
  32. package/lib/data/slideStyles.d.ts +206 -0
  33. package/lib/data/slideStyles.js +206 -0
  34. package/lib/data/slideThemes.d.ts +134 -0
  35. package/lib/data/slideThemes.js +134 -0
  36. package/lib/methods/mulmo_media_source.d.ts +1 -0
  37. package/lib/methods/mulmo_media_source.js +17 -3
  38. package/lib/slide/blocks.d.ts +2 -0
  39. package/lib/slide/blocks.js +54 -2
  40. package/lib/slide/index.d.ts +2 -2
  41. package/lib/slide/index.js +1 -1
  42. package/lib/slide/layouts/columns.js +4 -4
  43. package/lib/slide/layouts/comparison.js +4 -3
  44. package/lib/slide/layouts/grid.js +3 -3
  45. package/lib/slide/render.js +24 -1
  46. package/lib/slide/schema.d.ts +454 -0
  47. package/lib/slide/schema.js +19 -0
  48. package/lib/slide/utils.d.ts +12 -1
  49. package/lib/slide/utils.js +55 -2
  50. package/lib/types/schema.d.ts +448 -0
  51. package/lib/types/slide.d.ts +454 -0
  52. package/lib/types/slide.js +19 -0
  53. package/lib/types/type.d.ts +1 -0
  54. package/lib/utils/context.d.ts +182 -0
  55. package/lib/utils/html_render.js +44 -6
  56. package/lib/utils/image_plugins/slide.d.ts +14 -0
  57. package/lib/utils/image_plugins/slide.js +101 -2
  58. package/package.json +9 -2
  59. package/scripts/test/img_detector.png +0 -0
  60. package/scripts/test/img_higgs.png +0 -0
  61. package/scripts/test/img_lhc.png +0 -0
  62. package/scripts/test/test_slide_chart_mermaid.json +148 -0
  63. package/scripts/test/test_slide_image_ref.json +261 -0
  64. package/scripts/test/test_slide_image_ref_en.json +287 -0
package/README.md CHANGED
@@ -350,7 +350,7 @@ MulmoCast includes a powerful **Slide DSL** (`type: "slide"`) for creating struc
350
350
  ### Features
351
351
 
352
352
  - **11 Layouts**: title, columns, comparison, grid, bigQuote, stats, timeline, split, matrix, table, funnel
353
- - **7 Content Block Types**: text, bullets, code, callout, metric, divider, image
353
+ - **10 Content Block Types**: text, bullets, code, callout, metric, divider, image, imageRef, chart, mermaid
354
354
  - **13-Color Theme System**: Semantic color palette with dark/light support
355
355
  - **6 Preset Themes**: dark, pop, warm, creative, minimal, corporate
356
356
 
@@ -0,0 +1,60 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "$mulmocast": {
5
+ "type": "object",
6
+ "properties": {
7
+ "version": {
8
+ "type": "string",
9
+ "const": "1.0"
10
+ }
11
+ },
12
+ "required": ["version"],
13
+ "additionalProperties": false
14
+ },
15
+ "canvasSize": {
16
+ "type": "object",
17
+ "properties": {
18
+ "width": { "type": "number" },
19
+ "height": { "type": "number" }
20
+ },
21
+ "required": ["width", "height"],
22
+ "additionalProperties": false,
23
+ "default": { "width": 1280, "height": 720 }
24
+ },
25
+ "htmlImageParams": {
26
+ "type": "object",
27
+ "properties": {
28
+ "provider": { "enum": ["anthropic"] }
29
+ },
30
+ "required": ["provider"],
31
+ "additionalProperties": false,
32
+ "default": { "provider": "anthropic" }
33
+ },
34
+ "title": { "type": "string" },
35
+ "description": { "type": "string" },
36
+ "lang": { "type": "string" },
37
+ "beats": {
38
+ "type": "array",
39
+ "items": {
40
+ "type": "object",
41
+ "properties": {
42
+ "text": { "type": "string", "default": "" },
43
+ "htmlPrompt": {
44
+ "type": "object",
45
+ "properties": {
46
+ "prompt": { "type": "string" }
47
+ },
48
+ "required": ["prompt"],
49
+ "additionalProperties": false
50
+ }
51
+ },
52
+ "required": ["text", "htmlPrompt"],
53
+ "additionalProperties": false
54
+ },
55
+ "minItems": 1
56
+ }
57
+ },
58
+ "required": ["$mulmocast", "beats"],
59
+ "additionalProperties": false
60
+ }
@@ -0,0 +1,283 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "$mulmocast": {
5
+ "type": "object",
6
+ "properties": {
7
+ "version": {
8
+ "type": "string",
9
+ "const": "1.0"
10
+ },
11
+ "credit": {
12
+ "type": "string",
13
+ "const": "closing"
14
+ }
15
+ },
16
+ "required": ["version"],
17
+ "additionalProperties": false
18
+ },
19
+ "canvasSize": {
20
+ "type": "object",
21
+ "properties": {
22
+ "width": { "type": "number" },
23
+ "height": { "type": "number" }
24
+ },
25
+ "required": ["width", "height"],
26
+ "additionalProperties": false,
27
+ "default": { "width": 1280, "height": 720 }
28
+ },
29
+ "speechParams": {
30
+ "type": "object",
31
+ "properties": {
32
+ "provider": {
33
+ "type": "string",
34
+ "enum": ["openai", "google", "elevenlabs"],
35
+ "default": "openai"
36
+ },
37
+ "speakers": {
38
+ "type": "object",
39
+ "additionalProperties": {
40
+ "type": "object",
41
+ "properties": {
42
+ "displayName": {
43
+ "type": "object",
44
+ "additionalProperties": { "type": "string" }
45
+ },
46
+ "voiceId": { "type": "string" },
47
+ "speechOptions": {
48
+ "type": "object",
49
+ "properties": {
50
+ "speed": { "type": "number" },
51
+ "instruction": { "type": "string" }
52
+ },
53
+ "additionalProperties": false
54
+ },
55
+ "provider": {
56
+ "type": "string",
57
+ "enum": ["openai", "google", "elevenlabs"]
58
+ }
59
+ },
60
+ "required": ["voiceId"],
61
+ "additionalProperties": false
62
+ }
63
+ }
64
+ },
65
+ "required": ["speakers"],
66
+ "additionalProperties": false
67
+ },
68
+ "imageParams": {
69
+ "type": "object",
70
+ "properties": {
71
+ "model": { "type": "string" },
72
+ "style": { "type": "string" },
73
+ "moderation": { "type": "string" },
74
+ "provider": {
75
+ "type": "string",
76
+ "enum": ["openai", "google"],
77
+ "default": "openai"
78
+ }
79
+ },
80
+ "additionalProperties": false
81
+ },
82
+ "movieParams": {
83
+ "type": "object",
84
+ "properties": {
85
+ "provider": {
86
+ "type": "string",
87
+ "enum": ["openai", "google", "replicate"],
88
+ "default": "google"
89
+ },
90
+ "model": { "type": "string" },
91
+ "transition": {
92
+ "type": "object",
93
+ "properties": {
94
+ "type": {
95
+ "type": "string",
96
+ "enum": ["fade", "slideout_left"]
97
+ },
98
+ "duration": {
99
+ "type": "number",
100
+ "minimum": 0,
101
+ "maximum": 2,
102
+ "default": 0.3
103
+ }
104
+ },
105
+ "required": ["type"],
106
+ "additionalProperties": false
107
+ },
108
+ "fillOption": {
109
+ "type": "object",
110
+ "properties": {
111
+ "style": {
112
+ "type": "string",
113
+ "enum": ["aspectFit", "aspectFill"],
114
+ "default": "aspectFit"
115
+ }
116
+ },
117
+ "additionalProperties": false
118
+ }
119
+ },
120
+ "additionalProperties": false
121
+ },
122
+ "htmlImageParams": {
123
+ "type": "object",
124
+ "properties": {
125
+ "model": { "type": "string" },
126
+ "provider": {
127
+ "type": "string",
128
+ "enum": ["openai", "anthropic"],
129
+ "default": "openai"
130
+ }
131
+ },
132
+ "additionalProperties": false
133
+ },
134
+ "textSlideParams": {
135
+ "type": "object",
136
+ "properties": {
137
+ "cssStyles": {
138
+ "anyOf": [
139
+ { "type": "string" },
140
+ {
141
+ "type": "array",
142
+ "items": { "type": "string" }
143
+ }
144
+ ]
145
+ }
146
+ },
147
+ "required": ["cssStyles"],
148
+ "additionalProperties": false
149
+ },
150
+ "captionParams": {
151
+ "type": "object",
152
+ "properties": {
153
+ "lang": { "type": "string" },
154
+ "styles": {
155
+ "type": "array",
156
+ "items": { "type": "string" },
157
+ "default": []
158
+ }
159
+ },
160
+ "additionalProperties": false
161
+ },
162
+ "audioParams": {
163
+ "type": "object",
164
+ "properties": {
165
+ "padding": { "type": "number", "default": 0.3 },
166
+ "introPadding": { "type": "number", "default": 1 },
167
+ "closingPadding": { "type": "number", "default": 0.8 },
168
+ "outroPadding": { "type": "number", "default": 1 },
169
+ "bgmVolume": { "type": "number", "default": 0.2 },
170
+ "audioVolume": { "type": "number", "default": 1 }
171
+ },
172
+ "additionalProperties": false
173
+ },
174
+ "title": { "type": "string" },
175
+ "description": { "type": "string" },
176
+ "references": {
177
+ "type": "array",
178
+ "items": {
179
+ "type": "object",
180
+ "properties": {
181
+ "url": { "type": "string", "format": "uri" },
182
+ "title": { "type": "string" },
183
+ "description": { "type": "string" },
184
+ "type": {
185
+ "type": "string",
186
+ "enum": ["article", "paper", "image", "video", "audio"],
187
+ "default": "article"
188
+ }
189
+ },
190
+ "required": ["url"],
191
+ "additionalProperties": false
192
+ }
193
+ },
194
+ "lang": { "type": "string" },
195
+ "beats": {
196
+ "type": "array",
197
+ "items": {
198
+ "type": "object",
199
+ "properties": {
200
+ "speaker": { "type": "string", "default": "Presenter" },
201
+ "text": { "type": "string", "default": "" },
202
+ "id": { "type": "string" },
203
+ "description": { "type": "string" },
204
+ "image": {
205
+ "anyOf": [
206
+ {
207
+ "type": "object",
208
+ "properties": {
209
+ "type": { "type": "string", "const": "markdown" },
210
+ "markdown": {
211
+ "anyOf": [{ "type": "string" }, { "type": "array", "items": { "type": "string" } }]
212
+ }
213
+ },
214
+ "required": ["type", "markdown"],
215
+ "additionalProperties": false
216
+ },
217
+ {
218
+ "type": "object",
219
+ "properties": {
220
+ "type": { "type": "string", "const": "textSlide" },
221
+ "slide": {
222
+ "type": "object",
223
+ "properties": {
224
+ "title": { "type": "string" },
225
+ "subtitle": { "type": "string" },
226
+ "bullets": {
227
+ "type": "array",
228
+ "items": { "type": "string" }
229
+ }
230
+ },
231
+ "required": ["title"],
232
+ "additionalProperties": false
233
+ }
234
+ },
235
+ "required": ["type", "slide"],
236
+ "additionalProperties": false
237
+ }
238
+ ]
239
+ },
240
+ "audio": {
241
+ "type": "object",
242
+ "properties": {
243
+ "type": { "type": "string", "const": "audio" },
244
+ "source": {
245
+ "anyOf": [
246
+ {
247
+ "type": "object",
248
+ "properties": {
249
+ "kind": { "type": "string", "const": "url" },
250
+ "url": { "type": "string", "format": "uri" }
251
+ },
252
+ "required": ["kind", "url"],
253
+ "additionalProperties": false
254
+ },
255
+ {
256
+ "type": "object",
257
+ "properties": {
258
+ "kind": { "type": "string", "const": "path" },
259
+ "path": { "type": "string" }
260
+ },
261
+ "required": ["kind", "path"],
262
+ "additionalProperties": false
263
+ }
264
+ ]
265
+ }
266
+ },
267
+ "required": ["type", "source"],
268
+ "additionalProperties": false
269
+ },
270
+ "duration": { "type": "number" },
271
+ "imagePrompt": { "type": "string" },
272
+ "moviePrompt": { "type": "string" }
273
+ },
274
+ "additionalProperties": false
275
+ },
276
+ "minItems": 1
277
+ },
278
+ "imagePath": { "type": "string" },
279
+ "__test_invalid__": { "type": "boolean" }
280
+ },
281
+ "required": ["$mulmocast", "beats"],
282
+ "additionalProperties": false
283
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "colors": {
3
+ "bg": "F8FAFC",
4
+ "bgCard": "FFFFFF",
5
+ "bgCardAlt": "F1F5F9",
6
+ "text": "0F172A",
7
+ "textMuted": "475569",
8
+ "textDim": "94A3B8",
9
+ "primary": "2563EB",
10
+ "accent": "7C3AED",
11
+ "success": "16A34A",
12
+ "warning": "EA580C",
13
+ "danger": "DC2626",
14
+ "info": "0891B2",
15
+ "highlight": "DB2777"
16
+ },
17
+ "fonts": { "title": "Georgia", "body": "Helvetica", "mono": "Menlo" }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "colors": {
3
+ "bg": "1C1917",
4
+ "bgCard": "292524",
5
+ "bgCardAlt": "3D3733",
6
+ "text": "FAFAF9",
7
+ "textMuted": "D6D3D1",
8
+ "textDim": "A8A29E",
9
+ "primary": "F43F5E",
10
+ "accent": "FB923C",
11
+ "success": "4ADE80",
12
+ "warning": "FBBF24",
13
+ "danger": "EF4444",
14
+ "info": "38BDF8",
15
+ "highlight": "E879F9"
16
+ },
17
+ "fonts": { "title": "Georgia", "body": "Helvetica", "mono": "Consolas" }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "colors": {
3
+ "bg": "0F172A",
4
+ "bgCard": "1E293B",
5
+ "bgCardAlt": "334155",
6
+ "text": "F8FAFC",
7
+ "textMuted": "CBD5E1",
8
+ "textDim": "64748B",
9
+ "primary": "3B82F6",
10
+ "accent": "8B5CF6",
11
+ "success": "22C55E",
12
+ "warning": "F59E0B",
13
+ "danger": "EF4444",
14
+ "info": "14B8A6",
15
+ "highlight": "EC4899"
16
+ },
17
+ "fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "colors": {
3
+ "bg": "F8FAFC",
4
+ "bgCard": "FFFFFF",
5
+ "bgCardAlt": "F1F5F9",
6
+ "text": "0F172A",
7
+ "textMuted": "475569",
8
+ "textDim": "94A3B8",
9
+ "primary": "2563EB",
10
+ "accent": "7C3AED",
11
+ "success": "059669",
12
+ "warning": "D97706",
13
+ "danger": "DC2626",
14
+ "info": "0891B2",
15
+ "highlight": "DB2777"
16
+ },
17
+ "fonts": { "title": "Trebuchet MS", "body": "Calibri", "mono": "Consolas" }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "colors": {
3
+ "bg": "FFF0F5",
4
+ "bgCard": "FFFFFF",
5
+ "bgCardAlt": "FDE8EF",
6
+ "text": "1A1A2E",
7
+ "textMuted": "4A4A6A",
8
+ "textDim": "9090B0",
9
+ "primary": "E91E63",
10
+ "accent": "7C3AED",
11
+ "success": "10B981",
12
+ "warning": "F59E0B",
13
+ "danger": "EF4444",
14
+ "info": "06B6D4",
15
+ "highlight": "F97316"
16
+ },
17
+ "fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "colors": {
3
+ "bg": "FFFBEB",
4
+ "bgCard": "FFFFFF",
5
+ "bgCardAlt": "FEF3C7",
6
+ "text": "1C1917",
7
+ "textMuted": "57534E",
8
+ "textDim": "A8A29E",
9
+ "primary": "EA580C",
10
+ "accent": "D946EF",
11
+ "success": "16A34A",
12
+ "warning": "CA8A04",
13
+ "danger": "DC2626",
14
+ "info": "0284C7",
15
+ "highlight": "E11D48"
16
+ },
17
+ "fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
18
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "canvasSize": {
7
+ "width": 1536,
8
+ "height": 1024
9
+ },
10
+ "imageParams": {
11
+ "style": "<style>AKIRA aesthetic.</style>",
12
+ "images": {
13
+ "girl": {
14
+ "type": "image",
15
+ "source": {
16
+ "kind": "url",
17
+ "url": "https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/akira_presenter.png"
18
+ }
19
+ }
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "movieParams": {
7
+ "provider": "replicate",
8
+ "model": "bytedance/seedance-1-lite"
9
+ },
10
+ "speechParams": {
11
+ "speakers": {
12
+ "Presenter": {
13
+ "provider": "gemini",
14
+ "voiceId": "Leda",
15
+ "speechOptions": { "instruction": "Speak in a slightly high-pitched, curt tone with sudden flustered shifts—like a tsundere anime girl." }
16
+ }
17
+ }
18
+ },
19
+ "audioParams": {
20
+ "bgm": {
21
+ "kind": "url",
22
+ "url": "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/morning001.mp3"
23
+ }
24
+ },
25
+ "canvasSize": {
26
+ "width": 1024,
27
+ "height": 1536
28
+ },
29
+ "imageParams": {
30
+ "provider": "google",
31
+ "model": "gemini-2.5-flash-image",
32
+ "style": "<style>A highly polished 2D digital illustration in anime and manga style, featuring clean linework, soft shading, vivid colors, and expressive facial detailing. The composition emphasizes clarity and visual impact with a minimalistic background and a strong character focus. The lighting is even and bright, giving the image a crisp and energetic feel, reminiscent of high-quality character art used in Japanese visual novels or mobile games.</style>",
33
+ "images": {
34
+ "ani": {
35
+ "type": "image",
36
+ "source": {
37
+ "kind": "url",
38
+ "url": "https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/ani.png"
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "canvasSize": {
7
+ "width": 1536,
8
+ "height": 1024
9
+ },
10
+ "imageParams": {
11
+ "style": "A hand-drawn style illustration with a warm, nostalgic atmosphere. The background is rich with natural scenery—lush forests, cloudy skies, and traditional Japanese architecture. Characters have expressive eyes, soft facial features, and are portrayed with gentle lighting and subtle shading. The color palette is muted yet vivid, using earthy tones and watercolor-like textures. The overall scene feels magical and peaceful, with a sense of quiet wonder and emotional depth, reminiscent of classic 1980s and 1990s Japanese animation."
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "canvasSize": {
7
+ "width": 1536,
8
+ "height": 1024
9
+ },
10
+ "imageParams": {
11
+ "style": "<style>A multi panel comic strips. 1990s American workplace humor. Clean, minimalist line art with muted colors. One character is a nerdy office worker with glasses</style>"
12
+ }
13
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "canvasSize": {
7
+ "width": 1536,
8
+ "height": 1024
9
+ },
10
+ "imageParams": {
11
+ "style": "<style>Dragon Ball/Dr. Slump aesthetic.</style>",
12
+ "images": {
13
+ "girl": {
14
+ "type": "image",
15
+ "source": {
16
+ "kind": "url",
17
+ "url": "https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/slump_presenter.png"
18
+ }
19
+ }
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "canvasSize": {
7
+ "width": 1536,
8
+ "height": 1024
9
+ },
10
+ "imageParams": {
11
+ "style": "<style>Ghibli style</style>",
12
+ "images": {
13
+ "presenter": {
14
+ "type": "image",
15
+ "source": {
16
+ "kind": "url",
17
+ "url": "https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/ghibli_presenter.png"
18
+ }
19
+ }
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "canvasSize": {
7
+ "width": 1024,
8
+ "height": 1536
9
+ },
10
+ "speechParams": {
11
+ "provider": "openai",
12
+ "speakers": {
13
+ "Presenter": { "voiceId": "shimmer", "speechOptions": { "instruction": "speak very fast" } }
14
+ }
15
+ },
16
+ "imageParams": {
17
+ "style": "<style>Ghibli style</style>",
18
+ "images": {
19
+ "presenter": {
20
+ "type": "image",
21
+ "source": {
22
+ "kind": "url",
23
+ "url": "https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/ghibli_presenter.jpg"
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "canvasSize": {
7
+ "width": 1536,
8
+ "height": 1024
9
+ },
10
+ "imageParams": {
11
+ "style": "<style>Ghost in the shell aesthetic.</style>",
12
+ "images": {
13
+ "presenter": {
14
+ "type": "image",
15
+ "source": {
16
+ "kind": "url",
17
+ "url": "https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/ghost_presenter.png"
18
+ }
19
+ },
20
+ "optimus": {
21
+ "type": "image",
22
+ "source": {
23
+ "kind": "url",
24
+ "url": "https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/optimus.png"
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }