mulmocast 0.0.1 → 0.0.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 (115) hide show
  1. package/README.md +129 -15
  2. package/assets/font/NotoSansJP-Regular.ttf +0 -0
  3. package/assets/html/chart.html +38 -0
  4. package/assets/html/mermaid.html +51 -0
  5. package/assets/templates/business.json +57 -14
  6. package/assets/templates/children_book.json +1 -3
  7. package/assets/templates/coding.json +140 -0
  8. package/lib/actions/audio.d.ts +2 -2
  9. package/lib/actions/audio.js +88 -101
  10. package/lib/actions/images.d.ts +1 -1
  11. package/lib/actions/images.js +50 -88
  12. package/lib/actions/index.d.ts +5 -0
  13. package/lib/actions/index.js +5 -0
  14. package/lib/actions/movie.d.ts +9 -1
  15. package/lib/actions/movie.js +124 -65
  16. package/lib/actions/pdf.d.ts +2 -0
  17. package/lib/actions/pdf.js +211 -0
  18. package/lib/actions/pdf2.d.ts +2 -0
  19. package/lib/actions/pdf2.js +203 -0
  20. package/lib/actions/translate.d.ts +1 -1
  21. package/lib/actions/translate.js +38 -61
  22. package/lib/agents/add_bgm_agent.d.ts +1 -1
  23. package/lib/agents/add_bgm_agent.js +10 -14
  24. package/lib/agents/anthropic_agent.d.ts +23 -0
  25. package/lib/agents/anthropic_agent.js +162 -0
  26. package/lib/agents/combine_audio_files_agent.d.ts +1 -1
  27. package/lib/agents/combine_audio_files_agent.js +33 -32
  28. package/lib/agents/image_google_agent.d.ts +1 -1
  29. package/lib/agents/image_google_agent.js +8 -11
  30. package/lib/agents/image_openai_agent.js +7 -14
  31. package/lib/agents/index.d.ts +8 -8
  32. package/lib/agents/index.js +13 -30
  33. package/lib/agents/mulmo_prompts_agent.d.ts +1 -1
  34. package/lib/agents/mulmo_prompts_agent.js +7 -11
  35. package/lib/agents/nested_agent.d.ts +9 -0
  36. package/lib/agents/nested_agent.js +138 -0
  37. package/lib/agents/prompts_data.js +1 -4
  38. package/lib/agents/tts_nijivoice_agent.d.ts +1 -1
  39. package/lib/agents/tts_nijivoice_agent.js +8 -12
  40. package/lib/agents/tts_openai_agent.js +9 -16
  41. package/lib/agents/validate_mulmo_script_agent.d.ts +1 -1
  42. package/lib/agents/validate_mulmo_script_agent.js +6 -10
  43. package/lib/cli/args.d.ts +5 -2
  44. package/lib/cli/args.js +52 -35
  45. package/lib/cli/cli.d.ts +14 -0
  46. package/lib/cli/cli.js +74 -57
  47. package/lib/cli/common.js +1 -5
  48. package/lib/cli/tool-args.d.ts +4 -1
  49. package/lib/cli/tool-args.js +29 -18
  50. package/lib/cli/tool-cli.js +34 -51
  51. package/lib/methods/index.d.ts +4 -3
  52. package/lib/methods/index.js +4 -19
  53. package/lib/methods/mulmo_media_source.d.ts +4 -0
  54. package/lib/methods/mulmo_media_source.js +21 -0
  55. package/lib/methods/mulmo_script.d.ts +6 -5
  56. package/lib/methods/mulmo_script.js +29 -16
  57. package/lib/methods/mulmo_script_template.d.ts +1 -1
  58. package/lib/methods/mulmo_script_template.js +4 -10
  59. package/lib/methods/mulmo_studio_context.d.ts +1 -1
  60. package/lib/methods/mulmo_studio_context.js +3 -9
  61. package/lib/tools/create_mulmo_script_from_url.d.ts +3 -0
  62. package/lib/tools/create_mulmo_script_from_url.js +152 -0
  63. package/lib/tools/create_mulmo_script_interactively.d.ts +3 -0
  64. package/lib/tools/create_mulmo_script_interactively.js +258 -0
  65. package/lib/tools/dump_prompt.js +5 -8
  66. package/lib/tools/prompt.js +9 -11
  67. package/lib/tools/seed_from_url2.d.ts +3 -0
  68. package/lib/tools/seed_from_url2.js +154 -0
  69. package/lib/types/index.d.ts +2 -1
  70. package/lib/types/index.js +2 -17
  71. package/lib/types/schema.d.ts +3624 -2798
  72. package/lib/types/schema.js +172 -123
  73. package/lib/types/type.d.ts +34 -3
  74. package/lib/types/type.js +1 -2
  75. package/lib/utils/const.d.ts +4 -1
  76. package/lib/utils/const.js +6 -6
  77. package/lib/utils/file.d.ts +22 -4
  78. package/lib/utils/file.js +100 -79
  79. package/lib/utils/filters.d.ts +1 -0
  80. package/lib/utils/filters.js +47 -26
  81. package/lib/utils/image_plugins/chart.d.ts +3 -0
  82. package/lib/utils/image_plugins/chart.js +18 -0
  83. package/lib/utils/image_plugins/image.d.ts +2 -0
  84. package/lib/utils/image_plugins/image.js +3 -0
  85. package/lib/utils/image_plugins/index.d.ts +7 -0
  86. package/lib/utils/image_plugins/index.js +7 -0
  87. package/lib/utils/image_plugins/markdown.d.ts +3 -0
  88. package/lib/utils/image_plugins/markdown.js +11 -0
  89. package/lib/utils/image_plugins/mermaid.d.ts +3 -0
  90. package/lib/utils/image_plugins/mermaid.js +21 -0
  91. package/lib/utils/image_plugins/movie.d.ts +2 -0
  92. package/lib/utils/image_plugins/movie.js +3 -0
  93. package/lib/utils/image_plugins/source.d.ts +4 -0
  94. package/lib/utils/image_plugins/source.js +15 -0
  95. package/lib/utils/image_plugins/text_slide.d.ts +3 -0
  96. package/lib/utils/image_plugins/text_slide.js +12 -0
  97. package/lib/utils/image_plugins/type_guards.d.ts +6 -0
  98. package/lib/utils/image_plugins/type_guards.js +21 -0
  99. package/lib/utils/image_preprocess.d.ts +14 -0
  100. package/lib/utils/image_preprocess.js +52 -0
  101. package/lib/utils/inquirer.d.ts +2 -0
  102. package/lib/utils/inquirer.js +33 -0
  103. package/lib/utils/markdown.d.ts +3 -1
  104. package/lib/utils/markdown.js +20 -19
  105. package/lib/utils/pdf.d.ts +8 -0
  106. package/lib/utils/pdf.js +75 -0
  107. package/lib/utils/plugins.d.ts +5 -0
  108. package/lib/utils/plugins.js +11 -0
  109. package/lib/utils/preprocess.d.ts +70 -123
  110. package/lib/utils/preprocess.js +37 -43
  111. package/lib/utils/string.js +4 -10
  112. package/lib/utils/text_hash.js +2 -39
  113. package/lib/utils/utils.d.ts +12 -0
  114. package/lib/utils/utils.js +34 -0
  115. package/package.json +23 -8
package/README.md CHANGED
@@ -1,11 +1,19 @@
1
- # mulmo
1
+ # mulmocast
2
2
 
3
- A CLI tool for generating podcast and video content from script files. Automates the process of creating audio, images, and video from structured script files.
3
+ A CLI tool for generating podcast and video content from script files (MulmoScript). Automates the process of creating audio, images, and video from structured MulmoScript files.
4
+
5
+ ## What is MulmoScript?
6
+
7
+ **MulmoScript** is a simple JSON/YAML format for describing multi-modal content.
8
+ You can define speakers, text, images, and layout — all in one script.
9
+
10
+ A Hello World script is available in [./docs/scripts](./docs/scripts).
11
+ See [MulmoScript Format](#mulmoscript-format) for details on the structure.
4
12
 
5
13
  ## Installation
6
14
 
7
15
  ```bash
8
- npm install -g mulmo
16
+ npm install -g mulmocast
9
17
  ```
10
18
 
11
19
  You'll also need to install ffmpeg:
@@ -21,11 +29,16 @@ brew install ffmpeg
21
29
 
22
30
  Create a `.env` file in your project directory with the following API keys:
23
31
 
24
- ```
32
+ ### Required
33
+ ```bash
25
34
  OPENAI_API_KEY=your_openai_api_key
26
- GOOGLE_PROJECT_ID=your_google_project_id # optional for movie, image generation
27
- NIJIVOICE_API_KEY=your_nijivoice_api_key # optional for movie, audio generation
28
- BROWSERLESS_API_TOKEN=your_browserless_api_token # optional for scripting from web content
35
+ ```
36
+ ### Optional
37
+ ```bash
38
+ DEFAULT_OPENAI_IMAGE_MODEL=gpt-image-1 # for the advanced image generation model
39
+ GOOGLE_PROJECT_ID=your_google_project_id # for Google's image generation model
40
+ NIJIVOICE_API_KEY=your_nijivoice_api_key # for Nijivoice's TTS model
41
+ BROWSERLESS_API_TOKEN=your_browserless_api_token # to access web in mulmo-tool
29
42
  ```
30
43
 
31
44
  ## Workflow
@@ -35,14 +48,28 @@ BROWSERLESS_API_TOKEN=your_browserless_api_token # optional for scripting from w
35
48
  3. Generate images with `mulmo images`
36
49
  4. Create final video with `mulmo movie`
37
50
 
51
+ ## Quick Start
52
+
53
+ ```bash
54
+ # Generate script with interactive mode
55
+ mulmo-tool scripting -i -t children_book -o ./ -s story
56
+ ```
57
+ After running this command, you'll create a story script through an interactive conversation with the AI.
58
+
59
+ ```bash
60
+ # Generate both audio and images, then combine into video
61
+ mulmo movie {generated_script_file}
62
+ ```
63
+ Replace `{generated_script_file}` with the output file from the previous command, such as `story-1746600802426.json`.
64
+
38
65
  ## Generate MulmoScript
39
66
 
40
67
  ```bash
41
- # Generate script from web content
42
- mulmo-tool scripting -u https://example.com -t seed_materials
68
+ # Generate script from web content (requires Browserless API KEY)
69
+ mulmo-tool scripting -u https://example.com
43
70
 
44
71
  # Generate script with interactive mode
45
- mulmo-tool scripting -i -t seed_interactive
72
+ mulmo-tool scripting -i
46
73
  ```
47
74
 
48
75
  ## Generate content from MulmoScript
@@ -51,24 +78,111 @@ Mulmo provides several commands to handle different aspects of content creation:
51
78
 
52
79
  ```bash
53
80
  # Generate audio from script
54
- mulmo audio -f script.json
81
+ mulmo audio script.json
55
82
 
56
83
  # Generate images for script
57
- mulmo images -f script.json
84
+ mulmo images script.json
58
85
 
59
86
  # Generate both audio and images, then combine into video
60
- mulmo movie -f script.json
87
+ mulmo movie script.json
61
88
 
62
89
  # Translate script to Japanese
63
- mulmo translate -f script.json
90
+ mulmo translate script.json
64
91
  ```
65
92
 
93
+ ## Cache and Re-run
94
+ When running the same `mulmo` command multiple times, previously generated files are treated as cache. For example, audio or image files will not be regenerated if they already exist.
95
+
96
+ To force regeneration, delete the old files — including temporary files — under the output directory before re-running the command or use -f (force) option.
97
+
98
+ If you modify the text or instruction fields in a MulmoScript, mulmo will automatically detect the changes and regenerate the corresponding audio content upon re-run.
99
+
66
100
  ## MulmoScript Format
67
101
 
68
102
  MulmoScript is a JSON format to define podcast or video scripts:
69
- schema: [./src/types/schema.ts](./src/types/schema.ts)
103
+ Schema definition: [schema.ts](./src/types/schema.ts)
104
+
105
+ ## Sample MulmoScript
106
+
107
+ https://github.com/receptron/mulmocast-cli/tree/main/scripts
108
+
109
+ ## Directory Structure
110
+
111
+ | Directory | Description |
112
+ |-------------------|-----------------------------------------------------------------------------|
113
+ | `output/` | Artifacts generated by commands — e.g., `.json`, audio, and video files |
114
+ | `output/audio/` | Temporary audio fragments used in the final audio assembly |
115
+ | `output/images/` | Image files generated by the `images` command |
116
+ | `output/cache/` | Internal cache files for various processing steps |
117
+
118
+ > These directories are automatically created as needed by the `mulmo` commands.
119
+
120
+ ## Help
121
+
122
+ CLI Usage
123
+
124
+ ### `mulmo -h` Output
125
+ Use this command to generate content (audio, images, movie) from an existing MulmoScript.
126
+
127
+ ```bash
128
+ mulmo -h
129
+ ```
130
+ ```bash
131
+ mulmo <action> <file>
132
+
133
+ Run mulmocast
134
+
135
+ Positionals:
136
+ action action to perform
137
+ [string] [choices: "translate", "audio", "images", "movie", "preprocess"]
138
+ file Mulmo Script File [string]
139
+
140
+ Options:
141
+ --version Show version number [boolean]
142
+ -v, --verbose verbose log [boolean] [required] [default: false]
143
+ -o, --outdir output dir [string]
144
+ -b, --basedir base dir [string]
145
+ -a, --audiodir audio dir [string]
146
+ -i, --imagedir image dir [string]
147
+ -f, --force force generate [boolean] [default: false]
148
+ --help Show help [boolean]
149
+
150
+ ```
151
+
152
+ ### `mulmo-tool -h` Output
153
+ Use this command to generate a new MulmoScript from a URL or interactively.
154
+
155
+ ```bash
156
+ mulmo-tool -h
157
+ ```
158
+
159
+ ```bash
160
+ mulmo-tool <action>
161
+
162
+ Run mulmocast tool
163
+
164
+ Positionals:
165
+ action action to perform [string] [choices: "scripting", "prompt"]
166
+
167
+ Options:
168
+ --version Show version number [boolean]
169
+ -v, --verbose verbose log [boolean] [required] [default: false]
170
+ -o, --outdir output dir [string]
171
+ -b, --basedir base dir [string]
172
+ -u, --url URLs to reference (required when not in interactive mode)
173
+ [array] [default: []]
174
+ -i, --interactive Generate script in interactive mode with user prompts
175
+ [boolean]
176
+ -t, --template Template name to use
177
+ [string] [choices: "business", "children_book", "coding", "podcast_standard",
178
+ "sensei_and_taro"]
179
+ -c, --cache cache dir [string]
180
+ -s, --script script filename [string] [default: "script"]
181
+ --help Show help [boolean]
182
+ ```
70
183
 
71
184
 
72
185
  ## Contributing
73
186
 
74
187
  For developers interested in contributing to this project, please see [CONTRIBUTING.md](./CONTRIBUTING.md).
188
+
@@ -0,0 +1,38 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Simple Chart.js Bar Chart</title>
7
+ <style>
8
+ ${style}
9
+ .chart-container {
10
+ width: ${width}px;
11
+ margin: 0 auto;
12
+ }
13
+ </style>
14
+ <!-- Include Chart.js from CDN -->
15
+ <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
16
+ </head>
17
+ <body>
18
+ <h1>${title}</h1>
19
+ <div class="chart-container">
20
+ <canvas id="myChart"></canvas>
21
+ </div>
22
+
23
+ <!-- Plain JavaScript instead of TypeScript -->
24
+ <script>
25
+ // Wait for DOM to be fully loaded
26
+ document.addEventListener('DOMContentLoaded', function() {
27
+ // Get the canvas element
28
+ const ctx = document.getElementById('myChart');
29
+
30
+ // Create the data object (no TypeScript interfaces)
31
+ const chartData = ${chart_data};
32
+
33
+ // Initialize the chart
34
+ new Chart(ctx, chartData);
35
+ });
36
+ </script>
37
+ </body>
38
+ </html>
@@ -0,0 +1,51 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Mermaid Diagram</title>
7
+ <style>
8
+ ${style}
9
+ .container {
10
+ height: 100%;
11
+ display: flex;
12
+ flex-direction: column;
13
+ }
14
+ .mermaid {
15
+ width: 100%;
16
+ height: 100%;
17
+ margin: 0 auto;
18
+ display: flex;
19
+ justify-content: center;
20
+ align-items: center;
21
+ flex-grow: 1;
22
+ overflow: auto;
23
+ }
24
+ .mermaid svg {
25
+ max-width: 100%;
26
+ max-height: 100%;
27
+ height: auto;
28
+ width: auto;
29
+ }
30
+ </style>
31
+ <!-- Include Mermaid from CDN -->
32
+ <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
33
+ <script>
34
+ mermaid.initialize({
35
+ startOnLoad: true,
36
+ theme: 'default',
37
+ flowchart: {
38
+ useMaxWidth: true
39
+ }
40
+ });
41
+ </script>
42
+ </head>
43
+ <body>
44
+ <div class="container">
45
+ <h1>${title}</h1>
46
+ <div class="mermaid">
47
+ ${diagram_code}
48
+ </div>
49
+ </div>
50
+ </body>
51
+ </html>
@@ -1,22 +1,13 @@
1
1
  {
2
2
  "title": "Business presentation",
3
- "description": "Template for children book.",
4
- "systemPrompt": "Generate a script for a business presentation of the given topic. Use textSlides or markdown to show slides or use imagePrompt to generate an appropriate image for that page. Use the JSON below as a template",
3
+ "description": "Template for business presentation.",
4
+ "systemPrompt": "Generate a script for a business presentation of the given topic. Use textSlides, markdown, mermaid, or chart to show slides. Extract image links in the article to reuse them in the presentation. Use the JSON below as a template. chartData is the data for Chart.js",
5
5
  "script": {
6
6
  "$mulmocast": {
7
7
  "version": "1.0",
8
8
  "credit": "closing"
9
9
  },
10
10
  "title": "Sample Title",
11
- "canvasSize": {
12
- "width": 1536,
13
- "height": 1024
14
- },
15
- "imageParams": {
16
- "style": "Style appropriate for business environment.",
17
- "model": "gpt-image-1",
18
- "size": "1536x1024"
19
- },
20
11
  "speechParams": {
21
12
  "speakers": {
22
13
  "Presenter": {
@@ -41,7 +32,7 @@
41
32
  }
42
33
  },
43
34
  "textSlideParams": {
44
- "cssStyles": ["h1 { margin-top: 400px }"]
35
+ "cssStyles": ["h1 { margin-top: 300px }"]
45
36
  }
46
37
  },
47
38
  {
@@ -81,8 +72,60 @@
81
72
  },
82
73
  {
83
74
  "speaker": "Presenter",
84
- "text": "Our story begins with tree-dwelling primates—small mammals with forward-facing eyes and grasping hands. These ancestors lived in forests and evolved traits useful for climbing and visual depth perception.",
85
- "imagePrompt": "tree-dwelling primates with forward-facing eyes in a jungle."
75
+ "text": "This page shows the sales and profits of this company from January 2024 to June 2024.",
76
+ "image": {
77
+ "type": "chart",
78
+ "title": "Sales and Profits (from Jan to June)",
79
+ "chartData": {
80
+ "type": "bar",
81
+ "data": {
82
+ "labels": ["January", "February", "March", "April", "May", "June"],
83
+ "datasets": [
84
+ {
85
+ "label": "Revenue ($1000s)",
86
+ "data": [120, 135, 180, 155, 170, 190],
87
+ "backgroundColor": "rgba(54, 162, 235, 0.5)",
88
+ "borderColor": "rgba(54, 162, 235, 1)",
89
+ "borderWidth": 1
90
+ },
91
+ {
92
+ "label": "Profit ($1000s)",
93
+ "data": [45, 52, 68, 53, 61, 73],
94
+ "backgroundColor": "rgba(75, 192, 192, 0.5)",
95
+ "borderColor": "rgba(75, 192, 192, 1)",
96
+ "borderWidth": 1
97
+ }
98
+ ]
99
+ },
100
+ "options": {
101
+ "responsive": true,
102
+ "animation": false
103
+ }
104
+ }
105
+ }
106
+ },
107
+ {
108
+ "speaker": "Presenter",
109
+ "text": "Next, let's look at a diagram of our business process flow. This illustrates the key steps from product development to sales.",
110
+ "image": {
111
+ "type": "mermaid",
112
+ "title": "Business Process Flow",
113
+ "code": {
114
+ "kind": "text",
115
+ "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"
116
+ }
117
+ }
118
+ },
119
+ {
120
+ "speaker": "Presenter",
121
+ "text": "This is the image of a pingpong ball.",
122
+ "image": {
123
+ "type": "image",
124
+ "source": {
125
+ "kind": "url",
126
+ "url": "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/test/pingpong.png"
127
+ }
128
+ }
86
129
  }
87
130
  ]
88
131
  }
@@ -13,9 +13,7 @@
13
13
  "height": 1024
14
14
  },
15
15
  "imageParams": {
16
- "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.",
17
- "model": "gpt-image-1",
18
- "size": "1536x1024"
16
+ "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."
19
17
  },
20
18
  "speechParams": {
21
19
  "speakers": {
@@ -0,0 +1,140 @@
1
+ {
2
+ "title": "Coding presentation",
3
+ "description": "Template for software and coding presentation.",
4
+ "systemPrompt": "Generate a script for a technical presentation of the given topic. Use markdown with a code block to show some code on a slide. Avoid long coding examples, which may not fit in a single slide. Use the JSON below as a template.",
5
+ "script": {
6
+ "$mulmocast": {
7
+ "version": "1.0",
8
+ "credit": "closing"
9
+ },
10
+ "title": "Sample Title",
11
+ "speechParams": {
12
+ "speakers": {
13
+ "Presenter": {
14
+ "voiceId": "shimmer",
15
+ "displayName": {
16
+ "en": "Presenter",
17
+ "ja": "語り手"
18
+ }
19
+ }
20
+ }
21
+ },
22
+ "lang": "en",
23
+ "beats": [
24
+ {
25
+ "speaker": "Presenter",
26
+ "text": "Today we're exploring a fascinating concept that has shaped some of the most innovative companies and leaders of our time: the Reality Distortion Field. This term has become synonymous with visionary leadership and the ability to accomplish seemingly impossible goals.",
27
+ "image": {
28
+ "type": "textSlide",
29
+ "slide": {
30
+ "title": "This is the title of this slide",
31
+ "bullets": []
32
+ }
33
+ },
34
+ "textSlideParams": {
35
+ "cssStyles": ["h1 { margin-top: 400px }"]
36
+ }
37
+ },
38
+ {
39
+ "speaker": "Presenter",
40
+ "text": "Here is the sample code",
41
+ "image": {
42
+ "type": "markdown",
43
+ "markdown": ["# Markdown Table Example", "```TypeScript", "const main = () => {", " console.log('Hello World')", "}", "```"]
44
+ }
45
+ },
46
+ {
47
+ "speaker": "Presenter",
48
+ "text": "The evolution of humans is a complex journey that spans millions of years, shaped by biology, environment, and culture. Here's a high-level summary of the key stages in human evolution",
49
+ "image": {
50
+ "type": "textSlide",
51
+ "slide": {
52
+ "title": "Human Evolution",
53
+ "bullets": [
54
+ "Early Primates",
55
+ "Hominids and Hominins",
56
+ "Australopithecus",
57
+ "Genus Homo Emerges",
58
+ "Homo erectus and Migration",
59
+ "Neanderthals and Other Archaic Humans",
60
+ "Homo sapiens"
61
+ ]
62
+ }
63
+ }
64
+ },
65
+ {
66
+ "speaker": "Presenter",
67
+ "text": "Our story begins with tree-dwelling primates—small mammals with forward-facing eyes and grasping hands. These ancestors lived in forests and evolved traits useful for climbing and visual depth perception.",
68
+ "image": {
69
+ "type": "markdown",
70
+ "markdown": [
71
+ "# Markdown Table Example",
72
+ "| Item | In Stock | Price |",
73
+ "| :---------------- | :------: | ----: |",
74
+ "| Python Hat | True | 23.99 |",
75
+ "| SQL Hat | True | 23.99 |",
76
+ "| Codecademy Tee | False | 19.99 |",
77
+ "| Codecademy Hoodie | False | 42.99 |"
78
+ ]
79
+ }
80
+ },
81
+ {
82
+ "speaker": "Presenter",
83
+ "text": "Next, let's look at a diagram of our business process flow. This illustrates the key steps from product development to sales.",
84
+ "image": {
85
+ "type": "mermaid",
86
+ "title": "Business Process Flow",
87
+ "code": {
88
+ "kind": "text",
89
+ "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"
90
+ }
91
+ }
92
+ },
93
+ {
94
+ "speaker": "Presenter",
95
+ "text": "This page shows the sales and profits of this company from January 2024 to June 2024.",
96
+ "image": {
97
+ "type": "chart",
98
+ "title": "Sales and Profits (from Jan to June)",
99
+ "chartData": {
100
+ "type": "bar",
101
+ "data": {
102
+ "labels": ["January", "February", "March", "April", "May", "June"],
103
+ "datasets": [
104
+ {
105
+ "label": "Revenue ($1000s)",
106
+ "data": [120, 135, 180, 155, 170, 190],
107
+ "backgroundColor": "rgba(54, 162, 235, 0.5)",
108
+ "borderColor": "rgba(54, 162, 235, 1)",
109
+ "borderWidth": 1
110
+ },
111
+ {
112
+ "label": "Profit ($1000s)",
113
+ "data": [45, 52, 68, 53, 61, 73],
114
+ "backgroundColor": "rgba(75, 192, 192, 0.5)",
115
+ "borderColor": "rgba(75, 192, 192, 1)",
116
+ "borderWidth": 1
117
+ }
118
+ ]
119
+ },
120
+ "options": {
121
+ "responsive": true,
122
+ "animation": false
123
+ }
124
+ }
125
+ }
126
+ },
127
+ {
128
+ "speaker": "Presenter",
129
+ "text": "This is the image of a pingpong ball.",
130
+ "image": {
131
+ "type": "image",
132
+ "source": {
133
+ "kind": "url",
134
+ "url": "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/test/pingpong.png"
135
+ }
136
+ }
137
+ }
138
+ ]
139
+ }
140
+ }
@@ -1,3 +1,3 @@
1
1
  import "dotenv/config";
2
- import { MulmoStudioContext } from "../types";
3
- export declare const audio: (context: MulmoStudioContext, concurrency: number) => Promise<void>;
2
+ import { MulmoStudioContext } from "../types/index.js";
3
+ export declare const audio: (context: MulmoStudioContext) => Promise<void>;