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.
Files changed (77) hide show
  1. package/lib/actions/audio.d.ts +0 -1
  2. package/lib/actions/audio.js +18 -13
  3. package/lib/actions/image_agents.d.ts +3 -12
  4. package/lib/actions/image_agents.js +12 -8
  5. package/lib/actions/images.js +3 -1
  6. package/lib/actions/movie.js +1 -3
  7. package/lib/actions/translate.js +13 -31
  8. package/lib/agents/image_openai_agent.js +4 -1
  9. package/lib/agents/lipsync_replicate_agent.js +10 -3
  10. package/lib/cli/commands/audio/handler.js +1 -1
  11. package/lib/cli/commands/image/handler.js +1 -1
  12. package/lib/cli/commands/movie/handler.js +1 -1
  13. package/lib/cli/commands/pdf/handler.js +1 -1
  14. package/lib/cli/helpers.d.ts +1 -4
  15. package/lib/cli/helpers.js +3 -2
  16. package/lib/mcp/server.js +1 -1
  17. package/lib/methods/mulmo_presentation_style.d.ts +5 -5
  18. package/lib/methods/mulmo_presentation_style.js +14 -8
  19. package/lib/methods/mulmo_script.js +4 -1
  20. package/lib/methods/mulmo_studio_context.d.ts +1 -0
  21. package/lib/methods/mulmo_studio_context.js +8 -0
  22. package/lib/types/agent.d.ts +4 -0
  23. package/lib/types/schema.d.ts +712 -8
  24. package/lib/types/schema.js +6 -2
  25. package/lib/types/type.d.ts +1 -1
  26. package/lib/utils/const.js +1 -1
  27. package/lib/utils/context.d.ts +401 -34
  28. package/lib/utils/context.js +95 -56
  29. package/lib/utils/file.d.ts +1 -1
  30. package/lib/utils/file.js +5 -2
  31. package/lib/utils/filters.d.ts +1 -0
  32. package/lib/utils/filters.js +8 -0
  33. package/lib/utils/preprocess.d.ts +15 -2
  34. package/lib/utils/preprocess.js +3 -3
  35. package/lib/utils/provider2agent.d.ts +3 -2
  36. package/lib/utils/provider2agent.js +20 -2
  37. package/lib/utils/string.d.ts +1 -1
  38. package/lib/utils/string.js +11 -8
  39. package/package.json +2 -1
  40. package/scripts/templates/image_refs.json +1 -0
  41. package/scripts/templates/voice_over.json +1 -0
  42. package/scripts/test/gpt.json +33 -0
  43. package/scripts/test/mulmo_story.json +11 -0
  44. package/scripts/test/test.json +64 -0
  45. package/scripts/test/test1.json +41 -0
  46. package/scripts/test/test2.json +66 -0
  47. package/scripts/test/test_audio.json +152 -0
  48. package/scripts/test/test_audio_instructions.json +70 -0
  49. package/scripts/test/test_beats.json +59 -0
  50. package/scripts/test/test_captions.json +53 -0
  51. package/scripts/test/test_elevenlabs_models.json +194 -0
  52. package/scripts/test/test_en.json +29 -0
  53. package/scripts/test/test_hello.json +18 -0
  54. package/scripts/test/test_hello_google.json +26 -0
  55. package/scripts/test/test_html.json +67 -0
  56. package/scripts/test/test_image_refs.json +50 -0
  57. package/scripts/test/test_images.json +49 -0
  58. package/scripts/test/test_lang.json +87 -0
  59. package/scripts/test/test_layout.json +153 -0
  60. package/scripts/test/test_lipsync.json +62 -0
  61. package/scripts/test/test_loop.json +35 -0
  62. package/scripts/test/test_media.json +245 -0
  63. package/scripts/test/test_mixed_providers.json +92 -0
  64. package/scripts/test/test_movie.json +40 -0
  65. package/scripts/test/test_no_audio.json +253 -0
  66. package/scripts/test/test_no_audio_with_credit.json +254 -0
  67. package/scripts/test/test_order.json +69 -0
  68. package/scripts/test/test_order_portrait.json +73 -0
  69. package/scripts/test/test_replicate.json +145 -0
  70. package/scripts/test/test_slideout_left_no_audio.json +46 -0
  71. package/scripts/test/test_sound_effect.json +41 -0
  72. package/scripts/test/test_spillover.json +117 -0
  73. package/scripts/test/test_transition.json +56 -0
  74. package/scripts/test/test_transition_no_audio.json +46 -0
  75. package/scripts/test/test_video_speed.json +81 -0
  76. package/scripts/test/test_voice_over.json +105 -0
  77. package/scripts/test/test_voices.json +55 -0
@@ -0,0 +1,50 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1"
4
+ },
5
+ "lang": "en",
6
+ "title": "Test Image References",
7
+ "imageParams": {
8
+ "style": "Ghibli-style",
9
+ "images": {
10
+ "witch": {
11
+ "type": "imagePrompt",
12
+ "prompt": "A witch with a green hair, wearing a black robe"
13
+ },
14
+ "cat": {
15
+ "type": "imagePrompt",
16
+ "prompt": "A tiny black cat with a green eyes"
17
+ },
18
+ "broom": {
19
+ "type": "imagePrompt",
20
+ "prompt": "A yellow, old broomstick"
21
+ }
22
+ }
23
+ },
24
+ "beats": [
25
+ {
26
+ "text": "Hello World with a witch and a broom",
27
+ "imagePrompt": "Saying hello to the world",
28
+ "imageNames": ["witch", "broom"]
29
+ },
30
+ {
31
+ "text": "Hello World with a cat alone",
32
+ "imagePrompt": "Saying hello to the world",
33
+ "imageNames": ["cat"]
34
+ },
35
+ {
36
+ "text": "Hello World with a witch and a cat",
37
+ "imagePrompt": "Saying hello to the world",
38
+ "imageNames": ["witch", "cat"]
39
+ },
40
+ {
41
+ "text": "Hello World with all reference images",
42
+ "imagePrompt": "Saying hello to the world"
43
+ },
44
+ {
45
+ "text": "Hello World with no reference image",
46
+ "imagePrompt": "Saying hello to the world",
47
+ "imageNames": []
48
+ }
49
+ ]
50
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1"
4
+ },
5
+ "lang": "en",
6
+ "title": "Test Images",
7
+ "imageParams": {
8
+ "style": "Photorealistic-style",
9
+ "provider": "google"
10
+ },
11
+ "beats": [
12
+ {
13
+ "text": "Image with default provider and model",
14
+ "imagePrompt": "Blue sky, a flock of birds"
15
+ },
16
+ {
17
+ "text": "Image with openai provider",
18
+ "imagePrompt": "Blue sky, a flock of birds",
19
+ "imageParams": {
20
+ "provider": "openai"
21
+ }
22
+ },
23
+ {
24
+ "text": "Image with Dall-E 3",
25
+ "imagePrompt": "Blue sky, a flock of birds",
26
+ "imageParams": {
27
+ "model": "dall-e-3",
28
+ "style": "anime-style",
29
+ "provider": "openai"
30
+ }
31
+ },
32
+ {
33
+ "id": "image_with_quality",
34
+ "text": "Image with low quality",
35
+ "imagePrompt": "Blue sky, a flock of birds",
36
+ "imageParams": {
37
+ "quality": "low"
38
+ }
39
+ },
40
+ {
41
+ "id": "image_with_medium_quality",
42
+ "text": "Image with medium quality",
43
+ "imagePrompt": "Blue sky, a flock of birds",
44
+ "imageParams": {
45
+ "quality": "medium"
46
+ }
47
+ }
48
+ ]
49
+ }
@@ -0,0 +1,87 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1"
4
+ },
5
+ "lang": "en",
6
+ "speechParams": {
7
+ "speakers": {
8
+ "Presenter": {
9
+ "provider": "openai",
10
+ "voiceId": "shimmer",
11
+ "lang": {
12
+ "ja": {
13
+ "provider": "nijivoice",
14
+ "voiceId": "9d9ed276-49ee-443a-bc19-26e6136d05f0"
15
+ }
16
+ }
17
+ }
18
+ }
19
+ },
20
+ "beats": [
21
+ {
22
+ "text": "Hello World",
23
+ "image": {
24
+ "type": "textSlide",
25
+ "slide": {
26
+ "title": "Hello World"
27
+ }
28
+ }
29
+ },
30
+ {
31
+ "text": "Switching Language and Switching Screen should match.",
32
+ "image": {
33
+ "type": "textSlide",
34
+ "slide": {
35
+ "title": "Switching Language"
36
+ }
37
+ }
38
+ },
39
+ {
40
+ "text": "May the force be with you.",
41
+ "image": {
42
+ "type": "textSlide",
43
+ "slide": {
44
+ "title": "May the force be with you"
45
+ }
46
+ }
47
+ },
48
+ {
49
+ "text": "Switching Language and Switching Screen should match even with a short duration.",
50
+ "duration": 1,
51
+ "image": {
52
+ "type": "textSlide",
53
+ "slide": {
54
+ "title": "Switching Language (short duration)"
55
+ }
56
+ }
57
+ },
58
+ {
59
+ "text": "Switching Language and Switching Screen should match even with a long duration.",
60
+ "duration": 8,
61
+ "image": {
62
+ "type": "textSlide",
63
+ "slide": {
64
+ "title": "Switching Language (long duration)"
65
+ }
66
+ }
67
+ },
68
+ {
69
+ "text": "The yield of TSMC's 3nm process exceeeds 70%.",
70
+ "image": {
71
+ "type": "textSlide",
72
+ "slide": {
73
+ "title": "Text replacement test for nijivoice"
74
+ }
75
+ }
76
+ },
77
+ {
78
+ "text": "Goodbye",
79
+ "image": {
80
+ "type": "textSlide",
81
+ "slide": {
82
+ "title": "Goodbye"
83
+ }
84
+ }
85
+ }
86
+ ]
87
+ }
@@ -0,0 +1,153 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1"
4
+ },
5
+ "lang": "en",
6
+ "title": "Layout Test",
7
+ "audioParams": {
8
+ "introPadding": 0,
9
+ "padding": 0.1,
10
+ "closingPadding": 0,
11
+ "outroPadding": 0
12
+ },
13
+ "beats": [
14
+ {
15
+ "text": "",
16
+ "image": {
17
+ "type": "textSlide",
18
+ "slide": {
19
+ "title": "Title Only"
20
+ }
21
+ }
22
+ },
23
+ {
24
+ "text": "",
25
+ "image": {
26
+ "type": "textSlide",
27
+ "slide": {
28
+ "title": "Title",
29
+ "subtitle": "Subtitle"
30
+ }
31
+ }
32
+ },
33
+ {
34
+ "text": "",
35
+ "image": {
36
+ "type": "textSlide",
37
+ "slide": {
38
+ "title": "Human Evolution",
39
+ "bullets": [
40
+ "Early Primates",
41
+ "Hominids and Hominins",
42
+ "Australopithecus",
43
+ "Genus Homo Emerges",
44
+ "Homo erectus and Migration",
45
+ "Neanderthals and Other Archaic Humans",
46
+ "Homo sapiens"
47
+ ]
48
+ }
49
+ }
50
+ },
51
+ {
52
+ "text": "",
53
+ "image": {
54
+ "type": "markdown",
55
+ "markdown": [
56
+ "# Markdown Table Example",
57
+ "### Table",
58
+ "| Item | In Stock | Price |",
59
+ "| :---------------- | :------: | ----: |",
60
+ "| Python Hat | True | 23.99 |",
61
+ "| SQL Hat | True | 23.99 |",
62
+ "| Codecademy Tee | False | 19.99 |",
63
+ "| Codecademy Hoodie | False | 42.99 |"
64
+ ]
65
+ }
66
+ },
67
+ {
68
+ "text": "",
69
+ "image": {
70
+ "type": "chart",
71
+ "title": "Sales and Profits (from Jan to June)",
72
+ "chartData": {
73
+ "type": "bar",
74
+ "data": {
75
+ "labels": ["January", "February", "March", "April", "May", "June"],
76
+ "datasets": [
77
+ {
78
+ "label": "Revenue ($1000s)",
79
+ "data": [120, 135, 180, 155, 170, 190],
80
+ "backgroundColor": "rgba(54, 162, 235, 0.1)",
81
+ "borderColor": "rgba(54, 162, 235, 1)",
82
+ "borderWidth": 1
83
+ },
84
+ {
85
+ "label": "Profit ($1000s)",
86
+ "data": [45, 52, 68, 53, 61, 73],
87
+ "backgroundColor": "rgba(75, 192, 192, 0.1)",
88
+ "borderColor": "rgba(75, 192, 192, 1)",
89
+ "borderWidth": 1
90
+ }
91
+ ]
92
+ },
93
+ "options": {
94
+ "responsive": true,
95
+ "animation": false
96
+ }
97
+ }
98
+ }
99
+ },
100
+ {
101
+ "text": "",
102
+ "image": {
103
+ "type": "chart",
104
+ "title": "Sales and Profits (from Jan to June)",
105
+ "chartData": {
106
+ "type": "pie",
107
+ "data": {
108
+ "labels": ["OpenAIと投資家の取り分", "マイクロソフトの取り分"],
109
+ "datasets": [
110
+ {
111
+ "data": [90, 10],
112
+ "backgroundColor": ["rgba(75, 192, 192, 0.5)", "rgba(54, 162, 235, 0.5)"],
113
+ "borderColor": ["rgba(75, 192, 192, 1)", "rgba(54, 162, 235, 1)"],
114
+ "borderWidth": 1
115
+ }
116
+ ]
117
+ },
118
+ "options": {
119
+ "responsive": true,
120
+ "animation": false,
121
+ "plugins": {
122
+ "legend": {
123
+ "position": "bottom"
124
+ }
125
+ }
126
+ }
127
+ }
128
+ }
129
+ },
130
+ {
131
+ "text": "",
132
+ "image": {
133
+ "type": "mermaid",
134
+ "title": "Business Process Flow",
135
+ "code": {
136
+ "kind": "text",
137
+ "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"
138
+ }
139
+ }
140
+ },
141
+ {
142
+ "text": "",
143
+ "image": {
144
+ "type": "mermaid",
145
+ "title": "Business Process Flow",
146
+ "code": {
147
+ "kind": "text",
148
+ "text": "graph TB\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"
149
+ }
150
+ }
151
+ }
152
+ ]
153
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "$mulmocast": { "version": "1.1" },
3
+ "lipSyncParams": {
4
+ "provider": "replicate",
5
+ "model": "bytedance/latentsync"
6
+ },
7
+ "audioParams": {
8
+ "bgmVolume": 0.01,
9
+ "introPadding": 0,
10
+ "padding": 0.0
11
+ },
12
+ "lang": "en",
13
+ "beats": [
14
+ {
15
+ "id": "presenter_introduction",
16
+ "text": "Welcome to our presentation on artificial intelligence. Today we'll explore the fascinating world of machine learning.",
17
+ "moviePrompt": "A professional female presenter standing in front of a modern presentation screen, speaking confidently to an audience",
18
+ "enableLipSync": true
19
+ },
20
+ {
21
+ "id": "explaining_concepts",
22
+ "text": "Machine learning algorithms can process vast amounts of data to identify patterns and make predictions about future outcomes.",
23
+ "moviePrompt": "A close-up view of a female presenter explaining complex concepts with animated data visualizations and charts in the background",
24
+ "enableLipSync": true
25
+ },
26
+ {
27
+ "id": "real_world_examples",
28
+ "text": "From personalized recommendations on streaming services to fraud detection in banking, machine learning is already shaping our everyday lives.",
29
+ "imagePrompt": "A female presenter is hoding a phone in her hand.",
30
+ "moviePrompt": "Scenes a female presenter showing apps on smartphones, online shopping, and bank transactions, illustrating AI in real-world scenarios",
31
+ "enableLipSync": true,
32
+ "lipSyncParams": {
33
+ "model": "tmappdev/lipsync"
34
+ }
35
+ },
36
+ {
37
+ "id": "future_omni_human_photo_realistic",
38
+ "text": "In the future, advancements in AI could revolutionize industries like healthcare, education, and transportation.",
39
+ "imagePrompt": "A female presenter is standing in front of a futuristic cityscape with AI-powered hospital and an autonomous vehicle. Photo realistic.",
40
+ "enableLipSync": true,
41
+ "lipSyncParams": {
42
+ "model": "bytedance/omni-human"
43
+ }
44
+ },
45
+ {
46
+ "id": "future_possibilities",
47
+ "text": "In the future, advancements in AI could revolutionize industries like healthcare, education, and transportation.",
48
+ "imagePrompt": "A female presenter is standing in front of a futuristic cityscape with AI-powered hospital and an autonomous vehicle.",
49
+ "moviePrompt": "A female presenter in a futuristic cityscape with AI-powered hospitals, autonomous vehicles, and interactive learning environments",
50
+ "enableLipSync": true,
51
+ "lipSyncParams": {
52
+ "model": "tmappdev/lipsync"
53
+ }
54
+ },
55
+ {
56
+ "id": "concluding_remarks",
57
+ "text": "Thank you for your attention. I hope this presentation has provided valuable insights into the world of artificial intelligence.",
58
+ "moviePrompt": "A female presenter concluding their talk with a warm smile, gesturing towards the audience in a modern conference room",
59
+ "enableLipSync": true
60
+ }
61
+ ]
62
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "lang": "en",
7
+ "audioParams": {
8
+ "bgm": {
9
+ "kind": "url",
10
+ "url": "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/theme001.mp3"
11
+ }
12
+ },
13
+ "title": "Loop Test",
14
+ "beats": [
15
+ {
16
+ "duration": 200,
17
+ "text": "This beat has a long duration.",
18
+ "image": {
19
+ "type": "textSlide",
20
+ "slide": {
21
+ "title": "Duration = 200"
22
+ }
23
+ }
24
+ },
25
+ {
26
+ "text": "This beat is the last beat before the credit.",
27
+ "image": {
28
+ "type": "textSlide",
29
+ "slide": {
30
+ "title": "No Duration"
31
+ }
32
+ }
33
+ }
34
+ ]
35
+ }
@@ -0,0 +1,245 @@
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": "This is a local image.",
29
+ "image": {
30
+ "type": "image",
31
+ "source": {
32
+ "kind": "path",
33
+ "path": "../../assets/images/mulmocast_credit.png"
34
+ }
35
+ }
36
+ },
37
+ {
38
+ "speaker": "Presenter",
39
+ "text": "This is a reference beat.",
40
+ "duration": 0.5,
41
+ "image": {
42
+ "type": "beat",
43
+ "id": "first"
44
+ }
45
+ },
46
+ {
47
+ "speaker": "Presenter",
48
+ "text": "",
49
+ "duration": 0.5,
50
+ "id": "{1A57B3F5-B6CB-4948-96BB-6F018DCCBBD4}",
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": "This is a remote image.",
62
+ "image": {
63
+ "type": "image",
64
+ "source": {
65
+ "kind": "url",
66
+ "url": "https://raw.githubusercontent.com/receptron/mulmocast-cli/refs/heads/main/assets/images/mulmocast_credit.png"
67
+ }
68
+ }
69
+ },
70
+ {
71
+ "speaker": "Presenter",
72
+ "text": "",
73
+ "duration": 2,
74
+ "image": {
75
+ "type": "textSlide",
76
+ "slide": {
77
+ "title": "No Audio",
78
+ "bullets": ["2 seconds"]
79
+ }
80
+ }
81
+ },
82
+ {
83
+ "speaker": "Presenter",
84
+ "text": "This is a local movie with audio.",
85
+ "image": {
86
+ "type": "movie",
87
+ "source": {
88
+ "kind": "url",
89
+ "url": "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/test/pingpong.mov"
90
+ }
91
+ }
92
+ },
93
+ {
94
+ "speaker": "Presenter",
95
+ "text": "",
96
+ "image": {
97
+ "type": "textSlide",
98
+ "slide": {
99
+ "title": "Local Audio Test",
100
+ "bullets": ["Something"]
101
+ }
102
+ },
103
+ "audio": {
104
+ "type": "audio",
105
+ "source": {
106
+ "kind": "path",
107
+ "path": "../../assets/audio/local_voice.mp3"
108
+ }
109
+ }
110
+ },
111
+ {
112
+ "speaker": "Presenter",
113
+ "text": "This is a bulleted list in text slide format.",
114
+ "image": {
115
+ "type": "textSlide",
116
+ "slide": {
117
+ "title": "Human Evolution",
118
+ "bullets": [
119
+ "Early Primates",
120
+ "Hominids and Hominins",
121
+ "Australopithecus",
122
+ "Genus Homo Emerges",
123
+ "Homo erectus and Migration",
124
+ "Neanderthals and Other Archaic Humans",
125
+ "Homo sapiens"
126
+ ]
127
+ }
128
+ }
129
+ },
130
+ {
131
+ "speaker": "Presenter",
132
+ "text": "This is a table in markdown format.",
133
+ "image": {
134
+ "type": "markdown",
135
+ "markdown": [
136
+ "# Markdown Table Example",
137
+ "### Table",
138
+ "| Item | In Stock | Price |",
139
+ "| :---------------- | :------: | ----: |",
140
+ "| Python Hat | True | 23.99 |",
141
+ "| SQL Hat | True | 23.99 |",
142
+ "| Codecademy Tee | False | 19.99 |",
143
+ "| Codecademy Hoodie | False | 42.99 |",
144
+ "### Paragraph",
145
+ "This is a paragraph."
146
+ ]
147
+ }
148
+ },
149
+ {
150
+ "speaker": "Presenter",
151
+ "text": "This is a chart in chart format.",
152
+ "image": {
153
+ "type": "chart",
154
+ "title": "Sales and Profits (from Jan to June)",
155
+ "chartData": {
156
+ "type": "bar",
157
+ "data": {
158
+ "labels": ["January", "February", "March", "April", "May", "June"],
159
+ "datasets": [
160
+ {
161
+ "label": "Revenue ($1000s)",
162
+ "data": [120, 135, 180, 155, 170, 190],
163
+ "backgroundColor": "rgba(54, 162, 235, 0.5)",
164
+ "borderColor": "rgba(54, 162, 235, 1)",
165
+ "borderWidth": 1
166
+ },
167
+ {
168
+ "label": "Profit ($1000s)",
169
+ "data": [45, 52, 68, 53, 61, 73],
170
+ "backgroundColor": "rgba(75, 192, 192, 0.5)",
171
+ "borderColor": "rgba(75, 192, 192, 1)",
172
+ "borderWidth": 1
173
+ }
174
+ ]
175
+ },
176
+ "options": {
177
+ "responsive": true,
178
+ "animation": false
179
+ }
180
+ }
181
+ }
182
+ },
183
+ {
184
+ "speaker": "Presenter",
185
+ "text": "This is a diagram in mermaid format.",
186
+ "image": {
187
+ "type": "mermaid",
188
+ "title": "Business Process Flow",
189
+ "code": {
190
+ "kind": "text",
191
+ "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"
192
+ }
193
+ }
194
+ },
195
+ {
196
+ "speaker": "Presenter",
197
+ "text": "This is a tailwind html format.",
198
+ "image": {
199
+ "type": "html_tailwind",
200
+ "html": [
201
+ "<main class=\"flex-grow\">",
202
+ " <!-- Hero Section -->",
203
+ " <section class=\"bg-blue-600 text-white py-20\">",
204
+ " <div class=\"container mx-auto px-6 text-center\">",
205
+ " <h1 class=\"text-4xl md:text-5xl font-bold mb-4\">Welcome to Mulmocast</h1>",
206
+ " <p class=\"text-lg md:text-xl mb-8\">A modern web experience powered by Tailwind CSS</p>",
207
+ " <a href=\"#features\" class=\"bg-white text-blue-600 px-6 py-3 rounded-lg font-semibold shadow hover:bg-gray-100 transition\">",
208
+ " Learn More",
209
+ " </a>",
210
+ " </div>",
211
+ " </section>",
212
+ "",
213
+ " <!-- Features Section -->",
214
+ " <section id=\"features\" class=\"py-16 bg-gray-100\">",
215
+ " <div class=\"container mx-auto px-6\">",
216
+ " <div class=\"grid grid-cols-1 md:grid-cols-3 gap-8 text-center\">",
217
+ " <div>",
218
+ " <div class=\"text-blue-600 text-4xl mb-2\">⚡</div>",
219
+ " <h3 class=\"text-xl font-semibold mb-2\">Fast</h3>",
220
+ " <p class=\"text-gray-600\">Built with performance in mind using modern tools.</p>",
221
+ " </div>",
222
+ " <div>",
223
+ " <div class=\"text-blue-600 text-4xl mb-2\">🎨</div>",
224
+ " <h3 class=\"text-xl font-semibold mb-2\">Beautiful</h3>",
225
+ " <p class=\"text-gray-600\">Styled with Tailwind CSS for clean, responsive design.</p>",
226
+ " </div>",
227
+ " <div>",
228
+ " <div class=\"text-blue-600 text-4xl mb-2\">🚀</div>",
229
+ " <h3 class=\"text-xl font-semibold mb-2\">Launch Ready</h3>",
230
+ " <p class=\"text-gray-600\">Easy to deploy and extend for your next big idea.</p>",
231
+ " </div>",
232
+ " </div>",
233
+ " </div>",
234
+ " </section>",
235
+ "</main>",
236
+ "",
237
+ "<!-- Footer -->",
238
+ "<footer class=\"bg-white text-gray-500 text-center py-6 border-t\">",
239
+ " 2025 Mulmocast.",
240
+ "</footer>"
241
+ ]
242
+ }
243
+ }
244
+ ]
245
+ }