mulmocast 1.1.4 → 1.1.6
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/lib/actions/audio.d.ts +0 -1
- package/lib/actions/audio.js +18 -13
- package/lib/actions/image_agents.d.ts +3 -12
- package/lib/actions/image_agents.js +12 -8
- package/lib/actions/images.js +3 -1
- package/lib/actions/movie.js +1 -3
- package/lib/actions/translate.js +13 -31
- package/lib/agents/image_openai_agent.js +4 -1
- package/lib/agents/lipsync_replicate_agent.js +10 -3
- package/lib/cli/commands/audio/handler.js +1 -1
- package/lib/cli/commands/image/handler.js +1 -1
- package/lib/cli/commands/movie/handler.js +1 -1
- package/lib/cli/commands/pdf/handler.js +1 -1
- package/lib/cli/helpers.d.ts +1 -4
- package/lib/cli/helpers.js +3 -2
- package/lib/mcp/server.js +1 -1
- package/lib/methods/mulmo_presentation_style.d.ts +5 -5
- package/lib/methods/mulmo_presentation_style.js +14 -8
- package/lib/methods/mulmo_script.js +4 -1
- package/lib/methods/mulmo_studio_context.d.ts +1 -0
- package/lib/methods/mulmo_studio_context.js +8 -0
- package/lib/types/agent.d.ts +4 -0
- package/lib/types/schema.d.ts +712 -8
- package/lib/types/schema.js +6 -2
- package/lib/types/type.d.ts +1 -1
- package/lib/utils/const.js +1 -1
- package/lib/utils/context.d.ts +401 -34
- package/lib/utils/context.js +95 -56
- package/lib/utils/file.d.ts +1 -1
- package/lib/utils/file.js +5 -2
- package/lib/utils/filters.d.ts +1 -0
- package/lib/utils/filters.js +8 -0
- package/lib/utils/preprocess.d.ts +15 -2
- package/lib/utils/preprocess.js +3 -3
- package/lib/utils/provider2agent.d.ts +3 -2
- package/lib/utils/provider2agent.js +20 -2
- package/lib/utils/string.d.ts +1 -1
- package/lib/utils/string.js +11 -8
- package/package.json +2 -1
- package/scripts/templates/image_refs.json +1 -0
- package/scripts/templates/voice_over.json +1 -0
- package/scripts/test/gpt.json +33 -0
- package/scripts/test/mulmo_story.json +11 -0
- package/scripts/test/test.json +64 -0
- package/scripts/test/test1.json +41 -0
- package/scripts/test/test2.json +66 -0
- package/scripts/test/test_audio.json +152 -0
- package/scripts/test/test_audio_instructions.json +70 -0
- package/scripts/test/test_beats.json +59 -0
- package/scripts/test/test_captions.json +53 -0
- package/scripts/test/test_elevenlabs_models.json +194 -0
- package/scripts/test/test_en.json +29 -0
- package/scripts/test/test_hello.json +18 -0
- package/scripts/test/test_hello_google.json +26 -0
- package/scripts/test/test_html.json +67 -0
- package/scripts/test/test_image_refs.json +50 -0
- package/scripts/test/test_images.json +49 -0
- package/scripts/test/test_lang.json +87 -0
- package/scripts/test/test_layout.json +153 -0
- package/scripts/test/test_lipsync.json +62 -0
- package/scripts/test/test_loop.json +35 -0
- package/scripts/test/test_media.json +245 -0
- package/scripts/test/test_mixed_providers.json +92 -0
- package/scripts/test/test_movie.json +40 -0
- package/scripts/test/test_no_audio.json +253 -0
- package/scripts/test/test_no_audio_with_credit.json +254 -0
- package/scripts/test/test_order.json +69 -0
- package/scripts/test/test_order_portrait.json +73 -0
- package/scripts/test/test_replicate.json +145 -0
- package/scripts/test/test_slideout_left_no_audio.json +46 -0
- package/scripts/test/test_sound_effect.json +41 -0
- package/scripts/test/test_spillover.json +117 -0
- package/scripts/test/test_transition.json +56 -0
- package/scripts/test/test_transition_no_audio.json +46 -0
- package/scripts/test/test_video_speed.json +81 -0
- package/scripts/test/test_voice_over.json +105 -0
- package/scripts/test/test_voices.json +55 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$mulmocast": {
|
|
3
|
+
"version": "1.1"
|
|
4
|
+
},
|
|
5
|
+
"lang": "en",
|
|
6
|
+
"title": "Mixed Providers Test",
|
|
7
|
+
"description": "Testing multiple TTS providers for different speakers",
|
|
8
|
+
"speechParams": {
|
|
9
|
+
"speakers": {
|
|
10
|
+
"Presenter": {
|
|
11
|
+
"provider": "openai",
|
|
12
|
+
"voiceId": "shimmer",
|
|
13
|
+
"displayName": {
|
|
14
|
+
"en": "Main Presenter"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"Narrator": {
|
|
18
|
+
"voiceId": "en-US-Standard-A",
|
|
19
|
+
"provider": "google",
|
|
20
|
+
"displayName": {
|
|
21
|
+
"en": "Google Narrator"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"Expert": {
|
|
25
|
+
"voiceId": "21m00Tcm4TlvDq8ikWAM",
|
|
26
|
+
"provider": "elevenlabs",
|
|
27
|
+
"displayName": {
|
|
28
|
+
"en": "Expert Voice"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"Host": {
|
|
32
|
+
"voiceId": "3708ad43-cace-486c-a4ca-8fe41186e20c",
|
|
33
|
+
"provider": "nijivoice",
|
|
34
|
+
"displayName": {
|
|
35
|
+
"en": "Japanese Host"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"audioParams": {
|
|
41
|
+
"padding": 0.5,
|
|
42
|
+
"introPadding": 1.0,
|
|
43
|
+
"closingPadding": 1.0,
|
|
44
|
+
"outroPadding": 1.0
|
|
45
|
+
},
|
|
46
|
+
"beats": [
|
|
47
|
+
{
|
|
48
|
+
"speaker": "Presenter",
|
|
49
|
+
"text": "Welcome to our presentation. I'm using OpenAI's default provider.",
|
|
50
|
+
"image": {
|
|
51
|
+
"type": "textSlide",
|
|
52
|
+
"slide": {
|
|
53
|
+
"title": "Mixed Provider Demo",
|
|
54
|
+
"subtitle": "OpenAI Speaker"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"speaker": "Narrator",
|
|
60
|
+
"text": "And I'm the narrator, using Google's text-to-speech service.",
|
|
61
|
+
"image": {
|
|
62
|
+
"type": "textSlide",
|
|
63
|
+
"slide": {
|
|
64
|
+
"title": "Mixed Provider Demo",
|
|
65
|
+
"subtitle": "Google Speaker"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"speaker": "Expert",
|
|
71
|
+
"text": "Finally, I'm the expert using ElevenLabs for premium voice quality.",
|
|
72
|
+
"image": {
|
|
73
|
+
"type": "textSlide",
|
|
74
|
+
"slide": {
|
|
75
|
+
"title": "Mixed Provider Demo",
|
|
76
|
+
"subtitle": "ElevenLabs Speaker"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"speaker": "Host",
|
|
82
|
+
"text": "そして私は、日本語音声合成のためのNijivoiceを使用するホストです。",
|
|
83
|
+
"image": {
|
|
84
|
+
"type": "textSlide",
|
|
85
|
+
"slide": {
|
|
86
|
+
"title": "Mixed Provider Demo",
|
|
87
|
+
"subtitle": "Nijivoice Speaker (Japanese)"
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$mulmocast": {
|
|
3
|
+
"version": "1.1"
|
|
4
|
+
},
|
|
5
|
+
"lang": "en",
|
|
6
|
+
"movieParams": {
|
|
7
|
+
"provider": "google"
|
|
8
|
+
},
|
|
9
|
+
"canvasSize": {
|
|
10
|
+
"width": 720,
|
|
11
|
+
"height": 1280
|
|
12
|
+
},
|
|
13
|
+
"imageParams": {
|
|
14
|
+
"provider": "openai",
|
|
15
|
+
"model": "dall-e-3",
|
|
16
|
+
"style": "Photo realistic, cinematic style.",
|
|
17
|
+
"images": {
|
|
18
|
+
"optimus": {
|
|
19
|
+
"type": "image",
|
|
20
|
+
"source": {
|
|
21
|
+
"kind": "url",
|
|
22
|
+
"url": "https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/optimus.png"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"beats": [
|
|
28
|
+
{
|
|
29
|
+
"text": "Image with both image and movie prompt",
|
|
30
|
+
"imagePrompt": "巨大なロケット「Starship」が発射台から打ち上がろうとしている様子。空には星と火星が浮かんでいる。",
|
|
31
|
+
"moviePrompt": "Startship lifts off.",
|
|
32
|
+
"duration": 5
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"text": "Image with only movie prompt",
|
|
36
|
+
"moviePrompt": "Startship lifts off.",
|
|
37
|
+
"duration": 5
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$mulmocast": {
|
|
3
|
+
"version": "1.1"
|
|
4
|
+
},
|
|
5
|
+
"lang": "en",
|
|
6
|
+
"title": "Media Test",
|
|
7
|
+
"references": [
|
|
8
|
+
{
|
|
9
|
+
"url": "https://www.mulmocast.com",
|
|
10
|
+
"title": "Mulmocast",
|
|
11
|
+
"type": "article"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"speechParams": {
|
|
15
|
+
"speakers": {
|
|
16
|
+
"Presenter": {
|
|
17
|
+
"voiceId": "shimmer",
|
|
18
|
+
"displayName": {
|
|
19
|
+
"en": "Presenter"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"beats": [
|
|
25
|
+
{
|
|
26
|
+
"id": "first",
|
|
27
|
+
"speaker": "Presenter",
|
|
28
|
+
"text": "",
|
|
29
|
+
"duration": 2,
|
|
30
|
+
"image": {
|
|
31
|
+
"type": "image",
|
|
32
|
+
"source": {
|
|
33
|
+
"kind": "path",
|
|
34
|
+
"path": "../../assets/images/mulmocast_credit.png"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"speaker": "Presenter",
|
|
40
|
+
"text": "",
|
|
41
|
+
"duration": 0.5,
|
|
42
|
+
"image": {
|
|
43
|
+
"type": "beat",
|
|
44
|
+
"id": "first"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"speaker": "Presenter",
|
|
49
|
+
"text": "",
|
|
50
|
+
"duration": 0.5,
|
|
51
|
+
"image": {
|
|
52
|
+
"type": "textSlide",
|
|
53
|
+
"slide": {
|
|
54
|
+
"title": "No Audio",
|
|
55
|
+
"bullets": ["0.5 seconds"]
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"speaker": "Presenter",
|
|
61
|
+
"text": "",
|
|
62
|
+
"duration": 0.5,
|
|
63
|
+
"image": {
|
|
64
|
+
"type": "image",
|
|
65
|
+
"source": {
|
|
66
|
+
"kind": "url",
|
|
67
|
+
"url": "https://raw.githubusercontent.com/receptron/mulmocast-cli/refs/heads/main/assets/images/mulmocast_credit.png"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"speaker": "Presenter",
|
|
73
|
+
"text": "",
|
|
74
|
+
"duration": 2,
|
|
75
|
+
"image": {
|
|
76
|
+
"type": "textSlide",
|
|
77
|
+
"slide": {
|
|
78
|
+
"title": "No Audio",
|
|
79
|
+
"bullets": ["2 seconds"]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"speaker": "Presenter",
|
|
85
|
+
"text": "",
|
|
86
|
+
"duration": 2,
|
|
87
|
+
"image": {
|
|
88
|
+
"type": "movie",
|
|
89
|
+
"source": {
|
|
90
|
+
"kind": "url",
|
|
91
|
+
"url": "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/test/pingpong.mov"
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"speaker": "Presenter",
|
|
97
|
+
"text": "",
|
|
98
|
+
"duration": 2,
|
|
99
|
+
"image": {
|
|
100
|
+
"type": "textSlide",
|
|
101
|
+
"slide": {
|
|
102
|
+
"title": "Local Audio Test",
|
|
103
|
+
"bullets": ["Something"]
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"audio": {
|
|
107
|
+
"type": "audio",
|
|
108
|
+
"source": {
|
|
109
|
+
"kind": "path",
|
|
110
|
+
"path": "../../assets/audio/local_voice.mp3"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"speaker": "Presenter",
|
|
116
|
+
"text": "",
|
|
117
|
+
"duration": 2,
|
|
118
|
+
"image": {
|
|
119
|
+
"type": "textSlide",
|
|
120
|
+
"slide": {
|
|
121
|
+
"title": "Human Evolution",
|
|
122
|
+
"bullets": [
|
|
123
|
+
"Early Primates",
|
|
124
|
+
"Hominids and Hominins",
|
|
125
|
+
"Australopithecus",
|
|
126
|
+
"Genus Homo Emerges",
|
|
127
|
+
"Homo erectus and Migration",
|
|
128
|
+
"Neanderthals and Other Archaic Humans",
|
|
129
|
+
"Homo sapiens"
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"speaker": "Presenter",
|
|
136
|
+
"text": "",
|
|
137
|
+
"duration": 2,
|
|
138
|
+
"image": {
|
|
139
|
+
"type": "markdown",
|
|
140
|
+
"markdown": [
|
|
141
|
+
"# Markdown Table Example",
|
|
142
|
+
"### Table",
|
|
143
|
+
"| Item | In Stock | Price |",
|
|
144
|
+
"| :---------------- | :------: | ----: |",
|
|
145
|
+
"| Python Hat | True | 23.99 |",
|
|
146
|
+
"| SQL Hat | True | 23.99 |",
|
|
147
|
+
"| Codecademy Tee | False | 19.99 |",
|
|
148
|
+
"| Codecademy Hoodie | False | 42.99 |",
|
|
149
|
+
"### Paragraph",
|
|
150
|
+
"This is a paragraph."
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"speaker": "Presenter",
|
|
156
|
+
"text": "",
|
|
157
|
+
"duration": 2,
|
|
158
|
+
"image": {
|
|
159
|
+
"type": "chart",
|
|
160
|
+
"title": "Sales and Profits (from Jan to June)",
|
|
161
|
+
"chartData": {
|
|
162
|
+
"type": "bar",
|
|
163
|
+
"data": {
|
|
164
|
+
"labels": ["January", "February", "March", "April", "May", "June"],
|
|
165
|
+
"datasets": [
|
|
166
|
+
{
|
|
167
|
+
"label": "Revenue ($1000s)",
|
|
168
|
+
"data": [120, 135, 180, 155, 170, 190],
|
|
169
|
+
"backgroundColor": "rgba(54, 162, 235, 0.5)",
|
|
170
|
+
"borderColor": "rgba(54, 162, 235, 1)",
|
|
171
|
+
"borderWidth": 1
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"label": "Profit ($1000s)",
|
|
175
|
+
"data": [45, 52, 68, 53, 61, 73],
|
|
176
|
+
"backgroundColor": "rgba(75, 192, 192, 0.5)",
|
|
177
|
+
"borderColor": "rgba(75, 192, 192, 1)",
|
|
178
|
+
"borderWidth": 1
|
|
179
|
+
}
|
|
180
|
+
]
|
|
181
|
+
},
|
|
182
|
+
"options": {
|
|
183
|
+
"responsive": true,
|
|
184
|
+
"animation": false
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"speaker": "Presenter",
|
|
191
|
+
"text": "",
|
|
192
|
+
"duration": 2,
|
|
193
|
+
"image": {
|
|
194
|
+
"type": "mermaid",
|
|
195
|
+
"title": "Business Process Flow",
|
|
196
|
+
"code": {
|
|
197
|
+
"kind": "text",
|
|
198
|
+
"text": "graph LR\n A[Market Research] --> B[Product Planning]\n B --> C[Development]\n C --> D[Testing]\n D --> E[Manufacturing]\n E --> F[Marketing]\n F --> G[Sales]\n G --> H[Customer Support]\n H --> A"
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"speaker": "Presenter",
|
|
204
|
+
"text": "",
|
|
205
|
+
"duration": 2,
|
|
206
|
+
"image": {
|
|
207
|
+
"type": "html_tailwind",
|
|
208
|
+
"html": [
|
|
209
|
+
"<main class=\"flex-grow\">",
|
|
210
|
+
" <!-- Hero Section -->",
|
|
211
|
+
" <section class=\"bg-blue-600 text-white py-20\">",
|
|
212
|
+
" <div class=\"container mx-auto px-6 text-center\">",
|
|
213
|
+
" <h1 class=\"text-4xl md:text-5xl font-bold mb-4\">Welcome to Mulmocast</h1>",
|
|
214
|
+
" <p class=\"text-lg md:text-xl mb-8\">A modern web experience powered by Tailwind CSS</p>",
|
|
215
|
+
" <a href=\"#features\" class=\"bg-white text-blue-600 px-6 py-3 rounded-lg font-semibold shadow hover:bg-gray-100 transition\">",
|
|
216
|
+
" Learn More",
|
|
217
|
+
" </a>",
|
|
218
|
+
" </div>",
|
|
219
|
+
" </section>",
|
|
220
|
+
"",
|
|
221
|
+
" <!-- Features Section -->",
|
|
222
|
+
" <section id=\"features\" class=\"py-16 bg-gray-100\">",
|
|
223
|
+
" <div class=\"container mx-auto px-6\">",
|
|
224
|
+
" <div class=\"grid grid-cols-1 md:grid-cols-3 gap-8 text-center\">",
|
|
225
|
+
" <div>",
|
|
226
|
+
" <div class=\"text-blue-600 text-4xl mb-2\">⚡</div>",
|
|
227
|
+
" <h3 class=\"text-xl font-semibold mb-2\">Fast</h3>",
|
|
228
|
+
" <p class=\"text-gray-600\">Built with performance in mind using modern tools.</p>",
|
|
229
|
+
" </div>",
|
|
230
|
+
" <div>",
|
|
231
|
+
" <div class=\"text-blue-600 text-4xl mb-2\">🎨</div>",
|
|
232
|
+
" <h3 class=\"text-xl font-semibold mb-2\">Beautiful</h3>",
|
|
233
|
+
" <p class=\"text-gray-600\">Styled with Tailwind CSS for clean, responsive design.</p>",
|
|
234
|
+
" </div>",
|
|
235
|
+
" <div>",
|
|
236
|
+
" <div class=\"text-blue-600 text-4xl mb-2\">🚀</div>",
|
|
237
|
+
" <h3 class=\"text-xl font-semibold mb-2\">Launch Ready</h3>",
|
|
238
|
+
" <p class=\"text-gray-600\">Easy to deploy and extend for your next big idea.</p>",
|
|
239
|
+
" </div>",
|
|
240
|
+
" </div>",
|
|
241
|
+
" </div>",
|
|
242
|
+
" </section>",
|
|
243
|
+
"</main>",
|
|
244
|
+
"",
|
|
245
|
+
"<!-- Footer -->",
|
|
246
|
+
"<footer class=\"bg-white text-gray-500 text-center py-6 border-t\">",
|
|
247
|
+
" 2025 Mulmocast.",
|
|
248
|
+
"</footer>"
|
|
249
|
+
]
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
]
|
|
253
|
+
}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$mulmocast": {
|
|
3
|
+
"version": "1.1",
|
|
4
|
+
"credit": "closing"
|
|
5
|
+
},
|
|
6
|
+
"lang": "en",
|
|
7
|
+
"title": "Media Test",
|
|
8
|
+
"references": [
|
|
9
|
+
{
|
|
10
|
+
"url": "https://www.mulmocast.com",
|
|
11
|
+
"title": "Mulmocast",
|
|
12
|
+
"type": "article"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"speechParams": {
|
|
16
|
+
"speakers": {
|
|
17
|
+
"Presenter": {
|
|
18
|
+
"voiceId": "shimmer",
|
|
19
|
+
"displayName": {
|
|
20
|
+
"en": "Presenter"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"beats": [
|
|
26
|
+
{
|
|
27
|
+
"id": "first",
|
|
28
|
+
"speaker": "Presenter",
|
|
29
|
+
"text": "",
|
|
30
|
+
"duration": 2,
|
|
31
|
+
"image": {
|
|
32
|
+
"type": "image",
|
|
33
|
+
"source": {
|
|
34
|
+
"kind": "path",
|
|
35
|
+
"path": "../../assets/images/mulmocast_credit.png"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"speaker": "Presenter",
|
|
41
|
+
"text": "",
|
|
42
|
+
"duration": 0.5,
|
|
43
|
+
"image": {
|
|
44
|
+
"type": "beat",
|
|
45
|
+
"id": "first"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"speaker": "Presenter",
|
|
50
|
+
"text": "",
|
|
51
|
+
"duration": 0.5,
|
|
52
|
+
"image": {
|
|
53
|
+
"type": "textSlide",
|
|
54
|
+
"slide": {
|
|
55
|
+
"title": "No Audio",
|
|
56
|
+
"bullets": ["0.5 seconds"]
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"speaker": "Presenter",
|
|
62
|
+
"text": "",
|
|
63
|
+
"duration": 0.5,
|
|
64
|
+
"image": {
|
|
65
|
+
"type": "image",
|
|
66
|
+
"source": {
|
|
67
|
+
"kind": "url",
|
|
68
|
+
"url": "https://raw.githubusercontent.com/receptron/mulmocast-cli/refs/heads/main/assets/images/mulmocast_credit.png"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"speaker": "Presenter",
|
|
74
|
+
"text": "",
|
|
75
|
+
"duration": 2,
|
|
76
|
+
"image": {
|
|
77
|
+
"type": "textSlide",
|
|
78
|
+
"slide": {
|
|
79
|
+
"title": "No Audio",
|
|
80
|
+
"bullets": ["2 seconds"]
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"speaker": "Presenter",
|
|
86
|
+
"text": "",
|
|
87
|
+
"duration": 2,
|
|
88
|
+
"image": {
|
|
89
|
+
"type": "movie",
|
|
90
|
+
"source": {
|
|
91
|
+
"kind": "url",
|
|
92
|
+
"url": "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/test/pingpong.mov"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"speaker": "Presenter",
|
|
98
|
+
"text": "",
|
|
99
|
+
"duration": 2,
|
|
100
|
+
"image": {
|
|
101
|
+
"type": "textSlide",
|
|
102
|
+
"slide": {
|
|
103
|
+
"title": "Local Audio Test",
|
|
104
|
+
"bullets": ["Something"]
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"audio": {
|
|
108
|
+
"type": "audio",
|
|
109
|
+
"source": {
|
|
110
|
+
"kind": "path",
|
|
111
|
+
"path": "../../assets/audio/local_voice.mp3"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"speaker": "Presenter",
|
|
117
|
+
"text": "",
|
|
118
|
+
"duration": 2,
|
|
119
|
+
"image": {
|
|
120
|
+
"type": "textSlide",
|
|
121
|
+
"slide": {
|
|
122
|
+
"title": "Human Evolution",
|
|
123
|
+
"bullets": [
|
|
124
|
+
"Early Primates",
|
|
125
|
+
"Hominids and Hominins",
|
|
126
|
+
"Australopithecus",
|
|
127
|
+
"Genus Homo Emerges",
|
|
128
|
+
"Homo erectus and Migration",
|
|
129
|
+
"Neanderthals and Other Archaic Humans",
|
|
130
|
+
"Homo sapiens"
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"speaker": "Presenter",
|
|
137
|
+
"text": "",
|
|
138
|
+
"duration": 2,
|
|
139
|
+
"image": {
|
|
140
|
+
"type": "markdown",
|
|
141
|
+
"markdown": [
|
|
142
|
+
"# Markdown Table Example",
|
|
143
|
+
"### Table",
|
|
144
|
+
"| Item | In Stock | Price |",
|
|
145
|
+
"| :---------------- | :------: | ----: |",
|
|
146
|
+
"| Python Hat | True | 23.99 |",
|
|
147
|
+
"| SQL Hat | True | 23.99 |",
|
|
148
|
+
"| Codecademy Tee | False | 19.99 |",
|
|
149
|
+
"| Codecademy Hoodie | False | 42.99 |",
|
|
150
|
+
"### Paragraph",
|
|
151
|
+
"This is a paragraph."
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"speaker": "Presenter",
|
|
157
|
+
"text": "",
|
|
158
|
+
"duration": 2,
|
|
159
|
+
"image": {
|
|
160
|
+
"type": "chart",
|
|
161
|
+
"title": "Sales and Profits (from Jan to June)",
|
|
162
|
+
"chartData": {
|
|
163
|
+
"type": "bar",
|
|
164
|
+
"data": {
|
|
165
|
+
"labels": ["January", "February", "March", "April", "May", "June"],
|
|
166
|
+
"datasets": [
|
|
167
|
+
{
|
|
168
|
+
"label": "Revenue ($1000s)",
|
|
169
|
+
"data": [120, 135, 180, 155, 170, 190],
|
|
170
|
+
"backgroundColor": "rgba(54, 162, 235, 0.5)",
|
|
171
|
+
"borderColor": "rgba(54, 162, 235, 1)",
|
|
172
|
+
"borderWidth": 1
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"label": "Profit ($1000s)",
|
|
176
|
+
"data": [45, 52, 68, 53, 61, 73],
|
|
177
|
+
"backgroundColor": "rgba(75, 192, 192, 0.5)",
|
|
178
|
+
"borderColor": "rgba(75, 192, 192, 1)",
|
|
179
|
+
"borderWidth": 1
|
|
180
|
+
}
|
|
181
|
+
]
|
|
182
|
+
},
|
|
183
|
+
"options": {
|
|
184
|
+
"responsive": true,
|
|
185
|
+
"animation": false
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"speaker": "Presenter",
|
|
192
|
+
"text": "",
|
|
193
|
+
"duration": 2,
|
|
194
|
+
"image": {
|
|
195
|
+
"type": "mermaid",
|
|
196
|
+
"title": "Business Process Flow",
|
|
197
|
+
"code": {
|
|
198
|
+
"kind": "text",
|
|
199
|
+
"text": "graph LR\n A[Market Research] --> B[Product Planning]\n B --> C[Development]\n C --> D[Testing]\n D --> E[Manufacturing]\n E --> F[Marketing]\n F --> G[Sales]\n G --> H[Customer Support]\n H --> A"
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"speaker": "Presenter",
|
|
205
|
+
"text": "",
|
|
206
|
+
"duration": 2,
|
|
207
|
+
"image": {
|
|
208
|
+
"type": "html_tailwind",
|
|
209
|
+
"html": [
|
|
210
|
+
"<main class=\"flex-grow\">",
|
|
211
|
+
" <!-- Hero Section -->",
|
|
212
|
+
" <section class=\"bg-blue-600 text-white py-20\">",
|
|
213
|
+
" <div class=\"container mx-auto px-6 text-center\">",
|
|
214
|
+
" <h1 class=\"text-4xl md:text-5xl font-bold mb-4\">Welcome to Mulmocast</h1>",
|
|
215
|
+
" <p class=\"text-lg md:text-xl mb-8\">A modern web experience powered by Tailwind CSS</p>",
|
|
216
|
+
" <a href=\"#features\" class=\"bg-white text-blue-600 px-6 py-3 rounded-lg font-semibold shadow hover:bg-gray-100 transition\">",
|
|
217
|
+
" Learn More",
|
|
218
|
+
" </a>",
|
|
219
|
+
" </div>",
|
|
220
|
+
" </section>",
|
|
221
|
+
"",
|
|
222
|
+
" <!-- Features Section -->",
|
|
223
|
+
" <section id=\"features\" class=\"py-16 bg-gray-100\">",
|
|
224
|
+
" <div class=\"container mx-auto px-6\">",
|
|
225
|
+
" <div class=\"grid grid-cols-1 md:grid-cols-3 gap-8 text-center\">",
|
|
226
|
+
" <div>",
|
|
227
|
+
" <div class=\"text-blue-600 text-4xl mb-2\">⚡</div>",
|
|
228
|
+
" <h3 class=\"text-xl font-semibold mb-2\">Fast</h3>",
|
|
229
|
+
" <p class=\"text-gray-600\">Built with performance in mind using modern tools.</p>",
|
|
230
|
+
" </div>",
|
|
231
|
+
" <div>",
|
|
232
|
+
" <div class=\"text-blue-600 text-4xl mb-2\">🎨</div>",
|
|
233
|
+
" <h3 class=\"text-xl font-semibold mb-2\">Beautiful</h3>",
|
|
234
|
+
" <p class=\"text-gray-600\">Styled with Tailwind CSS for clean, responsive design.</p>",
|
|
235
|
+
" </div>",
|
|
236
|
+
" <div>",
|
|
237
|
+
" <div class=\"text-blue-600 text-4xl mb-2\">🚀</div>",
|
|
238
|
+
" <h3 class=\"text-xl font-semibold mb-2\">Launch Ready</h3>",
|
|
239
|
+
" <p class=\"text-gray-600\">Easy to deploy and extend for your next big idea.</p>",
|
|
240
|
+
" </div>",
|
|
241
|
+
" </div>",
|
|
242
|
+
" </div>",
|
|
243
|
+
" </section>",
|
|
244
|
+
"</main>",
|
|
245
|
+
"",
|
|
246
|
+
"<!-- Footer -->",
|
|
247
|
+
"<footer class=\"bg-white text-gray-500 text-center py-6 border-t\">",
|
|
248
|
+
" 2025 Mulmocast.",
|
|
249
|
+
"</footer>"
|
|
250
|
+
]
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
]
|
|
254
|
+
}
|