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.
- package/README.md +129 -15
- package/assets/font/NotoSansJP-Regular.ttf +0 -0
- package/assets/html/chart.html +38 -0
- package/assets/html/mermaid.html +51 -0
- package/assets/templates/business.json +57 -14
- package/assets/templates/children_book.json +1 -3
- package/assets/templates/coding.json +140 -0
- package/lib/actions/audio.d.ts +2 -2
- package/lib/actions/audio.js +88 -101
- package/lib/actions/images.d.ts +1 -1
- package/lib/actions/images.js +50 -88
- package/lib/actions/index.d.ts +5 -0
- package/lib/actions/index.js +5 -0
- package/lib/actions/movie.d.ts +9 -1
- package/lib/actions/movie.js +124 -65
- package/lib/actions/pdf.d.ts +2 -0
- package/lib/actions/pdf.js +211 -0
- package/lib/actions/pdf2.d.ts +2 -0
- package/lib/actions/pdf2.js +203 -0
- package/lib/actions/translate.d.ts +1 -1
- package/lib/actions/translate.js +38 -61
- package/lib/agents/add_bgm_agent.d.ts +1 -1
- package/lib/agents/add_bgm_agent.js +10 -14
- package/lib/agents/anthropic_agent.d.ts +23 -0
- package/lib/agents/anthropic_agent.js +162 -0
- package/lib/agents/combine_audio_files_agent.d.ts +1 -1
- package/lib/agents/combine_audio_files_agent.js +33 -32
- package/lib/agents/image_google_agent.d.ts +1 -1
- package/lib/agents/image_google_agent.js +8 -11
- package/lib/agents/image_openai_agent.js +7 -14
- package/lib/agents/index.d.ts +8 -8
- package/lib/agents/index.js +13 -30
- package/lib/agents/mulmo_prompts_agent.d.ts +1 -1
- package/lib/agents/mulmo_prompts_agent.js +7 -11
- package/lib/agents/nested_agent.d.ts +9 -0
- package/lib/agents/nested_agent.js +138 -0
- package/lib/agents/prompts_data.js +1 -4
- package/lib/agents/tts_nijivoice_agent.d.ts +1 -1
- package/lib/agents/tts_nijivoice_agent.js +8 -12
- package/lib/agents/tts_openai_agent.js +9 -16
- package/lib/agents/validate_mulmo_script_agent.d.ts +1 -1
- package/lib/agents/validate_mulmo_script_agent.js +6 -10
- package/lib/cli/args.d.ts +5 -2
- package/lib/cli/args.js +52 -35
- package/lib/cli/cli.d.ts +14 -0
- package/lib/cli/cli.js +74 -57
- package/lib/cli/common.js +1 -5
- package/lib/cli/tool-args.d.ts +4 -1
- package/lib/cli/tool-args.js +29 -18
- package/lib/cli/tool-cli.js +34 -51
- package/lib/methods/index.d.ts +4 -3
- package/lib/methods/index.js +4 -19
- package/lib/methods/mulmo_media_source.d.ts +4 -0
- package/lib/methods/mulmo_media_source.js +21 -0
- package/lib/methods/mulmo_script.d.ts +6 -5
- package/lib/methods/mulmo_script.js +29 -16
- package/lib/methods/mulmo_script_template.d.ts +1 -1
- package/lib/methods/mulmo_script_template.js +4 -10
- package/lib/methods/mulmo_studio_context.d.ts +1 -1
- package/lib/methods/mulmo_studio_context.js +3 -9
- package/lib/tools/create_mulmo_script_from_url.d.ts +3 -0
- package/lib/tools/create_mulmo_script_from_url.js +152 -0
- package/lib/tools/create_mulmo_script_interactively.d.ts +3 -0
- package/lib/tools/create_mulmo_script_interactively.js +258 -0
- package/lib/tools/dump_prompt.js +5 -8
- package/lib/tools/prompt.js +9 -11
- package/lib/tools/seed_from_url2.d.ts +3 -0
- package/lib/tools/seed_from_url2.js +154 -0
- package/lib/types/index.d.ts +2 -1
- package/lib/types/index.js +2 -17
- package/lib/types/schema.d.ts +3624 -2798
- package/lib/types/schema.js +172 -123
- package/lib/types/type.d.ts +34 -3
- package/lib/types/type.js +1 -2
- package/lib/utils/const.d.ts +4 -1
- package/lib/utils/const.js +6 -6
- package/lib/utils/file.d.ts +22 -4
- package/lib/utils/file.js +100 -79
- package/lib/utils/filters.d.ts +1 -0
- package/lib/utils/filters.js +47 -26
- package/lib/utils/image_plugins/chart.d.ts +3 -0
- package/lib/utils/image_plugins/chart.js +18 -0
- package/lib/utils/image_plugins/image.d.ts +2 -0
- package/lib/utils/image_plugins/image.js +3 -0
- package/lib/utils/image_plugins/index.d.ts +7 -0
- package/lib/utils/image_plugins/index.js +7 -0
- package/lib/utils/image_plugins/markdown.d.ts +3 -0
- package/lib/utils/image_plugins/markdown.js +11 -0
- package/lib/utils/image_plugins/mermaid.d.ts +3 -0
- package/lib/utils/image_plugins/mermaid.js +21 -0
- package/lib/utils/image_plugins/movie.d.ts +2 -0
- package/lib/utils/image_plugins/movie.js +3 -0
- package/lib/utils/image_plugins/source.d.ts +4 -0
- package/lib/utils/image_plugins/source.js +15 -0
- package/lib/utils/image_plugins/text_slide.d.ts +3 -0
- package/lib/utils/image_plugins/text_slide.js +12 -0
- package/lib/utils/image_plugins/type_guards.d.ts +6 -0
- package/lib/utils/image_plugins/type_guards.js +21 -0
- package/lib/utils/image_preprocess.d.ts +14 -0
- package/lib/utils/image_preprocess.js +52 -0
- package/lib/utils/inquirer.d.ts +2 -0
- package/lib/utils/inquirer.js +33 -0
- package/lib/utils/markdown.d.ts +3 -1
- package/lib/utils/markdown.js +20 -19
- package/lib/utils/pdf.d.ts +8 -0
- package/lib/utils/pdf.js +75 -0
- package/lib/utils/plugins.d.ts +5 -0
- package/lib/utils/plugins.js +11 -0
- package/lib/utils/preprocess.d.ts +70 -123
- package/lib/utils/preprocess.js +37 -43
- package/lib/utils/string.js +4 -10
- package/lib/utils/text_hash.js +2 -39
- package/lib/utils/utils.d.ts +12 -0
- package/lib/utils/utils.js +34 -0
- package/package.json +23 -8
package/README.md
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
#
|
|
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
|
|
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
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
|
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
|
|
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
|
|
81
|
+
mulmo audio script.json
|
|
55
82
|
|
|
56
83
|
# Generate images for script
|
|
57
|
-
mulmo images
|
|
84
|
+
mulmo images script.json
|
|
58
85
|
|
|
59
86
|
# Generate both audio and images, then combine into video
|
|
60
|
-
mulmo movie
|
|
87
|
+
mulmo movie script.json
|
|
61
88
|
|
|
62
89
|
# Translate script to Japanese
|
|
63
|
-
mulmo translate
|
|
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
|
-
|
|
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
|
+
|
|
Binary file
|
|
@@ -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
|
|
4
|
-
"systemPrompt": "Generate a script for a business presentation of the given topic. Use textSlides or
|
|
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:
|
|
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": "
|
|
85
|
-
"
|
|
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
|
+
}
|
package/lib/actions/audio.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import "dotenv/config";
|
|
2
|
-
import { MulmoStudioContext } from "../types";
|
|
3
|
-
export declare const audio: (context: MulmoStudioContext
|
|
2
|
+
import { MulmoStudioContext } from "../types/index.js";
|
|
3
|
+
export declare const audio: (context: MulmoStudioContext) => Promise<void>;
|