mulmocast 0.0.5 → 0.0.7
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 +294 -39
- package/assets/audio/silent60sec.mp3 +0 -0
- package/assets/html/caption.html +45 -0
- package/assets/html/chart.html +1 -1
- package/assets/html/mermaid.html +6 -2
- package/assets/html/tailwind.html +13 -0
- package/assets/templates/business.json +2 -128
- package/assets/templates/children_book.json +1 -128
- package/assets/templates/coding.json +2 -136
- package/assets/templates/comic_strips.json +6 -0
- package/assets/templates/ghibli_strips.json +6 -0
- package/assets/templates/sensei_and_taro.json +1 -118
- package/lib/actions/audio.js +62 -39
- package/lib/actions/captions.d.ts +2 -0
- package/lib/actions/captions.js +75 -0
- package/lib/actions/images.js +34 -13
- package/lib/actions/index.d.ts +1 -0
- package/lib/actions/index.js +1 -0
- package/lib/actions/movie.js +102 -101
- package/lib/actions/pdf.js +26 -6
- package/lib/actions/translate.js +60 -39
- package/lib/agents/add_bgm_agent.js +15 -39
- package/lib/agents/combine_audio_files_agent.js +53 -35
- package/lib/agents/index.d.ts +2 -3
- package/lib/agents/index.js +2 -3
- package/lib/agents/tts_google_agent.d.ts +4 -0
- package/lib/agents/tts_google_agent.js +51 -0
- package/lib/agents/validate_schema_agent.d.ts +19 -0
- package/lib/agents/validate_schema_agent.js +36 -0
- package/lib/cli/args.d.ts +2 -0
- package/lib/cli/args.js +9 -2
- package/lib/cli/bin.d.ts +3 -0
- package/lib/cli/bin.js +38 -0
- package/lib/cli/cli.js +34 -7
- package/lib/cli/commands/audio/builder.d.ts +14 -0
- package/lib/cli/commands/audio/builder.js +6 -0
- package/lib/cli/commands/audio/handler.d.ts +4 -0
- package/lib/cli/commands/audio/handler.js +7 -0
- package/lib/cli/commands/audio/index.d.ts +4 -0
- package/lib/cli/commands/audio/index.js +4 -0
- package/lib/cli/commands/image/builder.d.ts +14 -0
- package/lib/cli/commands/image/builder.js +6 -0
- package/lib/cli/commands/image/handler.d.ts +4 -0
- package/lib/cli/commands/image/handler.js +7 -0
- package/lib/cli/commands/image/index.d.ts +4 -0
- package/lib/cli/commands/image/index.js +4 -0
- package/lib/cli/commands/movie/builder.d.ts +18 -0
- package/lib/cli/commands/movie/builder.js +19 -0
- package/lib/cli/commands/movie/handler.d.ts +6 -0
- package/lib/cli/commands/movie/handler.js +12 -0
- package/lib/cli/commands/movie/index.d.ts +4 -0
- package/lib/cli/commands/movie/index.js +4 -0
- package/lib/cli/commands/pdf/builder.d.ts +18 -0
- package/lib/cli/commands/pdf/builder.js +19 -0
- package/lib/cli/commands/pdf/handler.d.ts +6 -0
- package/lib/cli/commands/pdf/handler.js +8 -0
- package/lib/cli/commands/pdf/index.d.ts +4 -0
- package/lib/cli/commands/pdf/index.js +4 -0
- package/lib/cli/commands/tool/index.d.ts +6 -0
- package/lib/cli/commands/tool/index.js +8 -0
- package/lib/cli/commands/tool/prompt/builder.d.ts +4 -0
- package/lib/cli/commands/tool/prompt/builder.js +11 -0
- package/lib/cli/commands/tool/prompt/handler.d.ts +4 -0
- package/lib/cli/commands/tool/prompt/handler.js +14 -0
- package/lib/cli/commands/tool/prompt/index.d.ts +4 -0
- package/lib/cli/commands/tool/prompt/index.js +4 -0
- package/lib/cli/commands/tool/schema/builder.d.ts +2 -0
- package/lib/cli/commands/tool/schema/builder.js +3 -0
- package/lib/cli/commands/tool/schema/handler.d.ts +2 -0
- package/lib/cli/commands/tool/schema/handler.js +12 -0
- package/lib/cli/commands/tool/schema/index.d.ts +4 -0
- package/lib/cli/commands/tool/schema/index.js +4 -0
- package/lib/cli/commands/tool/scripting/builder.d.ts +20 -0
- package/lib/cli/commands/tool/scripting/builder.js +63 -0
- package/lib/cli/commands/tool/scripting/handler.d.ts +13 -0
- package/lib/cli/commands/tool/scripting/handler.js +36 -0
- package/lib/cli/commands/tool/scripting/index.d.ts +4 -0
- package/lib/cli/commands/tool/scripting/index.js +4 -0
- package/lib/cli/commands/tool/story_to_script/builder.d.ts +20 -0
- package/lib/cli/commands/tool/story_to_script/builder.js +61 -0
- package/lib/cli/commands/tool/story_to_script/handler.d.ts +13 -0
- package/lib/cli/commands/tool/story_to_script/handler.js +36 -0
- package/lib/cli/commands/tool/story_to_script/index.d.ts +4 -0
- package/lib/cli/commands/tool/story_to_script/index.js +4 -0
- package/lib/cli/commands/translate/builder.d.ts +14 -0
- package/lib/cli/commands/translate/builder.js +5 -0
- package/lib/cli/commands/translate/handler.d.ts +4 -0
- package/lib/cli/commands/translate/handler.js +6 -0
- package/lib/cli/commands/translate/index.d.ts +4 -0
- package/lib/cli/commands/translate/index.js +4 -0
- package/lib/cli/common.d.ts +6 -2
- package/lib/cli/common.js +18 -7
- package/lib/cli/helpers.d.ts +38 -0
- package/lib/cli/helpers.js +115 -0
- package/lib/cli/tool-args.d.ts +1 -0
- package/lib/cli/tool-args.js +1 -1
- package/lib/cli/tool-cli.js +8 -0
- package/lib/methods/mulmo_script.d.ts +0 -1
- package/lib/methods/mulmo_script.js +4 -7
- package/lib/methods/mulmo_script_template.d.ts +2 -2
- package/lib/methods/mulmo_script_template.js +3 -13
- package/lib/methods/mulmo_studio.d.ts +8 -0
- package/lib/methods/mulmo_studio.js +24 -0
- package/lib/tools/create_mulmo_script_from_url.d.ts +1 -1
- package/lib/tools/create_mulmo_script_from_url.js +43 -14
- package/lib/tools/create_mulmo_script_interactively.d.ts +1 -1
- package/lib/tools/create_mulmo_script_interactively.js +21 -20
- package/lib/tools/dump_prompt.js +2 -0
- package/lib/tools/story_to_script.d.ts +12 -0
- package/lib/tools/story_to_script.js +275 -0
- package/lib/types/cli_types.d.ts +14 -0
- package/lib/types/cli_types.js +1 -0
- package/lib/types/schema.d.ts +637 -1766
- package/lib/types/schema.js +77 -8
- package/lib/types/type.d.ts +10 -3
- package/lib/utils/const.d.ts +5 -0
- package/lib/utils/const.js +5 -0
- package/lib/utils/ffmpeg_utils.d.ts +12 -0
- package/lib/utils/ffmpeg_utils.js +63 -0
- package/lib/utils/file.d.ts +8 -3
- package/lib/utils/file.js +40 -9
- package/lib/utils/filters.js +16 -11
- package/lib/utils/image_plugins/chart.js +6 -1
- package/lib/utils/image_plugins/html_tailwind.d.ts +3 -0
- package/lib/utils/image_plugins/html_tailwind.js +18 -0
- package/lib/utils/image_plugins/index.d.ts +2 -1
- package/lib/utils/image_plugins/index.js +2 -1
- package/lib/utils/image_plugins/mermaid.js +1 -1
- package/lib/utils/image_plugins/tailwind.d.ts +3 -0
- package/lib/utils/image_plugins/tailwind.js +18 -0
- package/lib/utils/image_plugins/text_slide.js +9 -2
- package/lib/utils/markdown.d.ts +1 -1
- package/lib/utils/markdown.js +8 -4
- package/lib/utils/preprocess.d.ts +40 -10
- package/lib/utils/preprocess.js +7 -2
- package/lib/utils/prompt.d.ts +16 -0
- package/lib/utils/prompt.js +74 -0
- package/lib/utils/utils.d.ts +10 -5
- package/lib/utils/utils.js +37 -17
- package/package.json +27 -23
package/README.md
CHANGED
|
@@ -1,13 +1,70 @@
|
|
|
1
|
-
#
|
|
1
|
+
# MulmoCast: A Multi-Modal Presentation Tool for the AI-Native Era
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Quick Start Guide
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
If you want to try our beta version, follow the instruction in the release note below.
|
|
6
|
+
|
|
7
|
+
- [MulmoCast 0.1.x Beta Release Notes](./docs/beta1_en.md)
|
|
8
|
+
- [MulmoCast 0.1.x Beta版 リリースノート](./docs/beta1_ja.md)
|
|
9
|
+
|
|
10
|
+
## What is MulmoCast?
|
|
11
|
+
|
|
12
|
+
Note: The video version of ["What is MulmoCast?"](https://x.com/mulmocast/status/1924682345065623719) is available on X, which is created by MulmoCast itself.
|
|
13
|
+
|
|
14
|
+
**MulmoCast** is a next-generation presentation platform, purpose-built for a world where AI and humans collaborate to create and share ideas.
|
|
15
|
+
|
|
16
|
+
Unlike traditional tools like PowerPoint or Keynote—both designed in the pre-AI era for human creators—MulmoCast is AI-native: reimagined from the ground up to work hand-in-hand with generative AI that understands and produces natural language, images, audio, and video.
|
|
17
|
+
|
|
18
|
+
As AI takes on an increasingly central role in content creation, it needs more than raw capability—it needs an environment designed for its strengths. MulmoCast provides that environment, empowering AI to generate rich, coherent presentations across multiple formats, while keeping humans in the creative loop.
|
|
19
|
+
|
|
20
|
+
At the core of MulmoCast is **MulmoScript**, a JSON-based intermediate language that functions like a screenplay or web markup. Generated by large language models, MulmoScript defines everything from narrative structure to visuals, making it easy to produce presentations that adapt seamlessly across formats.
|
|
21
|
+
|
|
22
|
+
```mermaid
|
|
23
|
+
flowchart TD
|
|
24
|
+
S_TextEditor["Creator"] <--> S_AIChat2("LLM")
|
|
25
|
+
S_AIChat2 --> MulmoScript["MulmoScript"]
|
|
26
|
+
MulmoScript --> MulmoCast["MulmoCast"]
|
|
27
|
+
MulmoCast --> O_Video("Video") & O_Podcast("Podcast") & O_Slideshow("Slideshow") & O_PDF("PDF") & O_Manga("Manga") & O_SwipeAnime("Swipe Anime")
|
|
28
|
+
|
|
29
|
+
MulmoScript@{ shape: div-proc}
|
|
30
|
+
MulmoCast@{ shape: trap-t}
|
|
31
|
+
S_TextEditor:::StoryInput
|
|
32
|
+
S_AIChat2:::ScriptInput
|
|
33
|
+
O_Video:::ScriptOutput
|
|
34
|
+
O_Podcast:::ScriptOutput
|
|
35
|
+
O_Slideshow:::ScriptOutput
|
|
36
|
+
O_PDF:::ScriptOutput
|
|
37
|
+
O_Manga:::ScriptOutput
|
|
38
|
+
O_SwipeAnime:::ScriptOutput
|
|
39
|
+
classDef StoryInput stroke-width:1px, stroke-dasharray:none, stroke:#46EDC8, fill:#DEFFF8, color:#378E7A
|
|
40
|
+
classDef ScriptInput stroke-width:1px, stroke-dasharray:none, stroke:#374D7C, fill:#E2EBFF, color:#374D7C
|
|
41
|
+
classDef ScriptOutput stroke-width:1px, stroke-dasharray:none, stroke:#FBB35A, fill:#FFEFDB, color:#8F632D
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
In today’s world, people consume information through many channels—on Zoom calls, in Slack threads, via videos on the go, or through podcasts during commutes. Presentations can no longer be confined to a single format or device. That’s why MulmoCast is built to be truly multi-modal, enabling output not only as slide decks but also as videos, podcasts, manga-style comics, and PDF documents.
|
|
45
|
+
|
|
46
|
+
Whether you're building a podcast from a research report or turning a business pitch into a narrated video, MulmoCast transforms source material into dynamic, multi-format content with the help of state-of-the-art AI like ChatGPT and Claude.
|
|
47
|
+
|
|
48
|
+
MulmoCast isn't just a tool. It’s a new foundation for communication—one where humans and AI co-create across every mode of expression.
|
|
49
|
+
|
|
50
|
+
## MulmoScript
|
|
6
51
|
|
|
7
52
|
**MulmoScript** is a simple JSON/YAML format for describing multi-modal content.
|
|
8
53
|
You can define speakers, text, images, and layout — all in one script.
|
|
9
54
|
|
|
10
|
-
|
|
55
|
+
Here is the "Hello World" in MulmoScript.
|
|
56
|
+
|
|
57
|
+
```JSON
|
|
58
|
+
{
|
|
59
|
+
"$mulmocast": {
|
|
60
|
+
"version": "1.0"
|
|
61
|
+
},
|
|
62
|
+
"beats": [
|
|
63
|
+
{ "text": "Hello World" }
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
11
68
|
See [MulmoScript Format](#mulmoscript-format) for details on the structure.
|
|
12
69
|
|
|
13
70
|
## Installation
|
|
@@ -38,40 +95,85 @@ OPENAI_API_KEY=your_openai_api_key
|
|
|
38
95
|
DEFAULT_OPENAI_IMAGE_MODEL=gpt-image-1 # for the advanced image generation model
|
|
39
96
|
GOOGLE_PROJECT_ID=your_google_project_id # for Google's image generation model
|
|
40
97
|
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
|
|
98
|
+
BROWSERLESS_API_TOKEN=your_browserless_api_token # to access web in mulmo tool
|
|
42
99
|
```
|
|
43
100
|
|
|
44
101
|
## Workflow
|
|
45
102
|
|
|
46
|
-
1. Create a MulmoScript JSON file with `mulmo
|
|
103
|
+
1. Create a MulmoScript JSON file with `mulmo tool scripting`
|
|
47
104
|
2. Generate audio with `mulmo audio`
|
|
48
105
|
3. Generate images with `mulmo images`
|
|
49
106
|
4. Create final video with `mulmo movie`
|
|
50
107
|
|
|
51
108
|
## Quick Start
|
|
109
|
+
### Step 1: Generate a MulmoScript with interactive mode
|
|
110
|
+
- Step 1-1: Run the script generation command
|
|
111
|
+
```bash
|
|
112
|
+
mulmo tool scripting -i -t children_book -o ./ -s story
|
|
113
|
+
```
|
|
114
|
+
This will initiate the script creation process.
|
|
115
|
+
|
|
116
|
+
- Step 1-2: Interactive conversation with AI
|
|
117
|
+
|
|
118
|
+
After running the command, you'll engage in an interactive conversation with the AI to create your story script. The AI will guide you through the process and help shape your content based on your inputs. Once completed, a JSON file (like `story-1746600802426.json`) will be generated.
|
|
119
|
+
|
|
120
|
+
### Step 2: Generate both audio and images, then combine into video
|
|
121
|
+
```bash
|
|
122
|
+
mulmo movie {generated_script_file}
|
|
123
|
+
```
|
|
124
|
+
Replace `{generated_script_file}` with the output file from STEP 1, such as `story-1746600802426.json`.
|
|
52
125
|
|
|
126
|
+
Optionally, you can specify *__clipboard* as the script file name to paste the script from the clipboard, which is generated by other interactive environment such as ChatGPT or Claude.
|
|
127
|
+
|
|
128
|
+
## Quick Start for Ghibli-Style Animation
|
|
129
|
+
|
|
130
|
+
[](https://www.youtube.com/watch?v=gz_Oe5p2n3s)
|
|
131
|
+
*Click the image above to watch an example of what you can create*
|
|
132
|
+
|
|
133
|
+
### Step 1: Check/Update Environment Setup
|
|
134
|
+
Verify your `.env` file contains:
|
|
53
135
|
```bash
|
|
54
|
-
|
|
55
|
-
|
|
136
|
+
OPENAI_API_KEY=your_openai_api_key
|
|
137
|
+
DEFAULT_OPENAI_IMAGE_MODEL=gpt-image-1 # required for high-quality Ghibli-style images
|
|
56
138
|
```
|
|
57
|
-
After running this command, you'll create a story script through an interactive conversation with the AI.
|
|
58
139
|
|
|
140
|
+
> **Note:** Ensure your OpenAI organization is verified to access the gpt-image-1 model. Visit https://platform.openai.com/settings/organization/general and complete the "Verifications" section.
|
|
141
|
+
|
|
142
|
+
### Step 2: Generate a Ghibli-style MulmoScript
|
|
59
143
|
```bash
|
|
60
|
-
|
|
61
|
-
|
|
144
|
+
mulmo tool scripting -i -t ghibli_strips -o ./ -s story
|
|
145
|
+
```
|
|
146
|
+
This will initiate an interactive conversation with the AI to create your Ghibli-inspired story. Once completed, a JSON file (e.g., `story-1747834931950.json`) will be generated.
|
|
147
|
+
|
|
148
|
+
### Step 3: Translate the MulmoScript
|
|
149
|
+
```bash
|
|
150
|
+
mulmo translate {generated_script_file_from_step_2}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Step 4: Generate video with Japanese subtitles
|
|
154
|
+
```bash
|
|
155
|
+
mulmo movie {generated_script_file_from_step_2} -c ja
|
|
156
|
+
```
|
|
157
|
+
The `-c ja` flag adds Japanese subtitles to your video.
|
|
158
|
+
|
|
159
|
+
When the process completes, the CLI will display the path to your generated video file:
|
|
160
|
+
```bash
|
|
161
|
+
Video created successfully! 14.939 sec
|
|
162
|
+
writing: /Users/username/path/to/output/story-1747834931950__ja.mp4
|
|
62
163
|
```
|
|
63
|
-
Replace `{generated_script_file}` with the output file from the previous command, such as `story-1746600802426.json`.
|
|
64
164
|
|
|
65
165
|
## Generate MulmoScript
|
|
66
166
|
|
|
67
167
|
```bash
|
|
68
168
|
# Generate script from web content (requires Browserless API KEY)
|
|
69
|
-
mulmo
|
|
169
|
+
mulmo tool scripting -u https://example.com
|
|
70
170
|
|
|
71
171
|
# Generate script with interactive mode
|
|
72
|
-
mulmo
|
|
172
|
+
mulmo tool scripting -i
|
|
73
173
|
```
|
|
74
174
|
|
|
175
|
+
When using the `sensei_and_taro` template, a Nijivoice API key is required.
|
|
176
|
+
|
|
75
177
|
## Generate content from MulmoScript
|
|
76
178
|
|
|
77
179
|
Mulmo provides several commands to handle different aspects of content creation:
|
|
@@ -121,52 +223,150 @@ https://github.com/receptron/mulmocast-cli/tree/main/scripts
|
|
|
121
223
|
|
|
122
224
|
CLI Usage
|
|
123
225
|
|
|
124
|
-
### `mulmo -h` Output
|
|
125
|
-
Use this command to generate content (audio, images, movie) from an existing MulmoScript.
|
|
126
226
|
|
|
127
|
-
|
|
128
|
-
mulmo -h
|
|
227
|
+
|
|
129
228
|
```
|
|
130
|
-
|
|
131
|
-
mulmo <action> <file>
|
|
229
|
+
mulmo <command> [options]
|
|
132
230
|
|
|
133
|
-
|
|
231
|
+
Commands:
|
|
232
|
+
mulmo translate <file> Translate Mulmo script
|
|
233
|
+
mulmo audio <file> Generate audio files
|
|
234
|
+
mulmo images <file> Generate image files
|
|
235
|
+
mulmo movie <file> Generate movie file
|
|
236
|
+
mulmo pdf <file> Generate PDF files
|
|
237
|
+
mulmo tool <command> Generate Mulmo script and other tools
|
|
238
|
+
|
|
239
|
+
Options:
|
|
240
|
+
--version Show version number [boolean]
|
|
241
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
242
|
+
-h, --help Show help [boolean]
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
mulmo translate <file>
|
|
247
|
+
|
|
248
|
+
Translate Mulmo script
|
|
249
|
+
|
|
250
|
+
Positionals:
|
|
251
|
+
file Mulmo Script File [string] [required]
|
|
252
|
+
|
|
253
|
+
Options:
|
|
254
|
+
--version Show version number [boolean]
|
|
255
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
256
|
+
-h, --help Show help [boolean]
|
|
257
|
+
-o, --outdir output dir [string]
|
|
258
|
+
-b, --basedir base dir [string]
|
|
259
|
+
-l, --lang target language [string] [choices: "en", "ja"]
|
|
260
|
+
-f, --force Force regenerate [boolean] [default: false]
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
mulmo audio <file>
|
|
265
|
+
|
|
266
|
+
Generate audio files
|
|
134
267
|
|
|
135
268
|
Positionals:
|
|
136
|
-
|
|
137
|
-
[string] [choices: "translate", "audio", "images", "movie", "preprocess"]
|
|
138
|
-
file Mulmo Script File [string]
|
|
269
|
+
file Mulmo Script File [string] [required]
|
|
139
270
|
|
|
140
271
|
Options:
|
|
141
272
|
--version Show version number [boolean]
|
|
142
273
|
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
274
|
+
-h, --help Show help [boolean]
|
|
143
275
|
-o, --outdir output dir [string]
|
|
144
276
|
-b, --basedir base dir [string]
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
|
|
277
|
+
-l, --lang target language [string] [choices: "en", "ja"]
|
|
278
|
+
-f, --force Force regenerate [boolean] [default: false]
|
|
279
|
+
-a, --audiodir Audio output directory [string]
|
|
280
|
+
```
|
|
149
281
|
|
|
150
282
|
```
|
|
283
|
+
mulmo images <file>
|
|
151
284
|
|
|
152
|
-
|
|
153
|
-
Use this command to generate a new MulmoScript from a URL or interactively.
|
|
285
|
+
Generate image files
|
|
154
286
|
|
|
155
|
-
|
|
156
|
-
|
|
287
|
+
Positionals:
|
|
288
|
+
file Mulmo Script File [string] [required]
|
|
289
|
+
|
|
290
|
+
Options:
|
|
291
|
+
--version Show version number [boolean]
|
|
292
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
293
|
+
-h, --help Show help [boolean]
|
|
294
|
+
-o, --outdir output dir [string]
|
|
295
|
+
-b, --basedir base dir [string]
|
|
296
|
+
-l, --lang target language [string] [choices: "en", "ja"]
|
|
297
|
+
-f, --force Force regenerate [boolean] [default: false]
|
|
298
|
+
-i, --imagedir Image output directory [string]
|
|
157
299
|
```
|
|
158
300
|
|
|
159
|
-
```
|
|
160
|
-
mulmo
|
|
301
|
+
```
|
|
302
|
+
mulmo movie <file>
|
|
161
303
|
|
|
162
|
-
|
|
304
|
+
Generate movie file
|
|
163
305
|
|
|
164
306
|
Positionals:
|
|
165
|
-
|
|
307
|
+
file Mulmo Script File [string] [required]
|
|
308
|
+
|
|
309
|
+
Options:
|
|
310
|
+
--version Show version number [boolean]
|
|
311
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
312
|
+
-h, --help Show help [boolean]
|
|
313
|
+
-o, --outdir output dir [string]
|
|
314
|
+
-b, --basedir base dir [string]
|
|
315
|
+
-l, --lang target language [string] [choices: "en", "ja"]
|
|
316
|
+
-f, --force Force regenerate [boolean] [default: false]
|
|
317
|
+
-a, --audiodir Audio output directory [string]
|
|
318
|
+
-i, --imagedir Image output directory [string]
|
|
319
|
+
-c, --caption Video captions [string] [choices: "en", "ja"]
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
```
|
|
323
|
+
mulmo pdf <file>
|
|
324
|
+
|
|
325
|
+
Generate PDF files
|
|
326
|
+
|
|
327
|
+
Positionals:
|
|
328
|
+
file Mulmo Script File [string] [required]
|
|
329
|
+
|
|
330
|
+
Options:
|
|
331
|
+
--version Show version number [boolean]
|
|
332
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
333
|
+
-h, --help Show help [boolean]
|
|
334
|
+
-o, --outdir output dir [string]
|
|
335
|
+
-b, --basedir base dir [string]
|
|
336
|
+
-l, --lang target language [string] [choices: "en", "ja"]
|
|
337
|
+
-f, --force Force regenerate [boolean] [default: false]
|
|
338
|
+
-i, --imagedir Image output directory [string]
|
|
339
|
+
--pdf_mode PDF mode
|
|
340
|
+
[string] [choices: "slide", "talk", "handout"] [default: "slide"]
|
|
341
|
+
--pdf_size PDF paper size (default: letter)
|
|
342
|
+
[choices: "letter", "a4"] [default: "letter"]
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
```
|
|
346
|
+
mulmo tool <command>
|
|
347
|
+
|
|
348
|
+
Generate Mulmo script and other tools
|
|
349
|
+
|
|
350
|
+
Commands:
|
|
351
|
+
mulmo tool scripting Generate mulmocast script
|
|
352
|
+
mulmo tool prompt Dump prompt from template
|
|
353
|
+
mulmo tool schema Dump mulmocast schema
|
|
354
|
+
|
|
355
|
+
Options:
|
|
356
|
+
--version Show version number [boolean]
|
|
357
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
358
|
+
-h, --help Show help [boolean]
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
```
|
|
362
|
+
mulmo tool scripting
|
|
363
|
+
|
|
364
|
+
Generate mulmocast script
|
|
166
365
|
|
|
167
366
|
Options:
|
|
168
367
|
--version Show version number [boolean]
|
|
169
368
|
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
369
|
+
-h, --help Show help [boolean]
|
|
170
370
|
-o, --outdir output dir [string]
|
|
171
371
|
-b, --basedir base dir [string]
|
|
172
372
|
-u, --url URLs to reference (required when not in interactive mode)
|
|
@@ -174,12 +374,67 @@ Options:
|
|
|
174
374
|
-i, --interactive Generate script in interactive mode with user prompts
|
|
175
375
|
[boolean]
|
|
176
376
|
-t, --template Template name to use
|
|
177
|
-
|
|
178
|
-
|
|
377
|
+
[string] [choices: "business", "children_book", "coding", "comic_strips",
|
|
378
|
+
"ghibli_strips", "podcast_standard", "sensei_and_taro"]
|
|
179
379
|
-c, --cache cache dir [string]
|
|
180
380
|
-s, --script script filename [string] [default: "script"]
|
|
181
|
-
--
|
|
381
|
+
--llm llm
|
|
382
|
+
[string] [choices: "openAIAgent", "anthropicAgent", "geminiAgent",
|
|
383
|
+
"groqAgent"]
|
|
384
|
+
--llm_model llm model [string]
|
|
385
|
+
```
|
|
386
|
+
|
|
182
387
|
```
|
|
388
|
+
mulmo tool story_to_script <file>
|
|
389
|
+
|
|
390
|
+
Generate Mulmo script from story
|
|
391
|
+
|
|
392
|
+
Positionals:
|
|
393
|
+
file story file path [string] [required]
|
|
394
|
+
|
|
395
|
+
Options:
|
|
396
|
+
--version Show version number [boolean]
|
|
397
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
398
|
+
-h, --help Show help [boolean]
|
|
399
|
+
-o, --outdir output dir [string]
|
|
400
|
+
-b, --basedir base dir [string]
|
|
401
|
+
-t, --template Template name to use
|
|
402
|
+
[string] [choices: "business", "children_book", "coding", "comic_strips",
|
|
403
|
+
"ghibli_strips", "podcast_standard", "sensei_and_taro"]
|
|
404
|
+
-s, --script script filename [string] [default: "script"]
|
|
405
|
+
--beats_per_scene beats per scene [number] [default: 3]
|
|
406
|
+
--llm llm
|
|
407
|
+
[string] [choices: "openAI", "anthropic", "gemini", "groq"]
|
|
408
|
+
--llm_model llm model [string]
|
|
409
|
+
--mode story to script generation mode
|
|
410
|
+
[string] [choices: "step_wise", "one_step"] [default: "step_wise"]
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
```
|
|
414
|
+
mulmo tool prompt
|
|
415
|
+
|
|
416
|
+
Dump prompt from template
|
|
417
|
+
|
|
418
|
+
Options:
|
|
419
|
+
--version Show version number [boolean]
|
|
420
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
421
|
+
-h, --help Show help [boolean]
|
|
422
|
+
-t, --template Template name to use
|
|
423
|
+
[string] [choices: "business", "children_book", "coding", "comic_strips",
|
|
424
|
+
"ghibli_strips", "podcast_standard", "sensei_and_taro"]
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
```
|
|
428
|
+
mulmo tool schema
|
|
429
|
+
|
|
430
|
+
Dump mulmocast schema
|
|
431
|
+
|
|
432
|
+
Options:
|
|
433
|
+
--version Show version number [boolean]
|
|
434
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
435
|
+
-h, --help Show help [boolean]
|
|
436
|
+
```
|
|
437
|
+
|
|
183
438
|
|
|
184
439
|
|
|
185
440
|
## Contributing
|
|
Binary file
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
<style>
|
|
7
|
+
body{
|
|
8
|
+
margin: 0;
|
|
9
|
+
background: transparent;
|
|
10
|
+
}
|
|
11
|
+
.container {
|
|
12
|
+
/* Box styling */
|
|
13
|
+
width: ${width}px;
|
|
14
|
+
height: ${height}px;
|
|
15
|
+
position: relative;
|
|
16
|
+
margin: 0;
|
|
17
|
+
box-sizing: border-box;
|
|
18
|
+
background: transparent;
|
|
19
|
+
}
|
|
20
|
+
.caption {
|
|
21
|
+
/* Text positioned at the bottom */
|
|
22
|
+
position: absolute;
|
|
23
|
+
bottom: 0px;
|
|
24
|
+
/* Enable text wrapping */
|
|
25
|
+
word-wrap: break-word;
|
|
26
|
+
overflow-wrap: break-word;
|
|
27
|
+
/* Optional styling */
|
|
28
|
+
font-family: Arial, sans-serif;
|
|
29
|
+
font-size: 32px;
|
|
30
|
+
text-align: center;
|
|
31
|
+
color: white;
|
|
32
|
+
text-shadow: 0px 0px 20px rgba(0, 0, 0, 1.0);
|
|
33
|
+
padding-left: 10%;
|
|
34
|
+
padding-right: 10%;
|
|
35
|
+
padding-top: 4px;
|
|
36
|
+
background: rgba(0, 0, 0, 0.4);
|
|
37
|
+
}
|
|
38
|
+
</style>
|
|
39
|
+
</head>
|
|
40
|
+
<body>
|
|
41
|
+
<div class="container">
|
|
42
|
+
<div class="caption">${caption}</div>
|
|
43
|
+
</div>
|
|
44
|
+
</body>
|
|
45
|
+
</html>
|
package/assets/html/chart.html
CHANGED
package/assets/html/mermaid.html
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
}
|
|
24
24
|
.mermaid svg {
|
|
25
25
|
max-width: 100%;
|
|
26
|
-
max-height:
|
|
26
|
+
max-height: 80%;
|
|
27
27
|
height: auto;
|
|
28
28
|
width: auto;
|
|
29
29
|
}
|
|
@@ -38,6 +38,10 @@
|
|
|
38
38
|
useMaxWidth: true
|
|
39
39
|
}
|
|
40
40
|
});
|
|
41
|
+
document.addEventListener("DOMContentLoaded", () => {
|
|
42
|
+
mermaid.init(undefined, ".mermaid");
|
|
43
|
+
document.querySelector(".mermaid").dataset.ready = "true";
|
|
44
|
+
});
|
|
41
45
|
</script>
|
|
42
46
|
</head>
|
|
43
47
|
<body>
|
|
@@ -48,4 +52,4 @@
|
|
|
48
52
|
</div>
|
|
49
53
|
</div>
|
|
50
54
|
</body>
|
|
51
|
-
</html>
|
|
55
|
+
</html>
|
|
@@ -0,0 +1,13 @@
|
|
|
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>${title}</title>
|
|
7
|
+
<!-- Tailwind CSS CDN -->
|
|
8
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
9
|
+
</head>
|
|
10
|
+
<body class="bg-white text-gray-800 min-h-screen flex flex-col">
|
|
11
|
+
${html_body}
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
|
@@ -1,132 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"title": "Business presentation",
|
|
3
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
|
-
"
|
|
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: 300px }"]
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"speaker": "Presenter",
|
|
40
|
-
"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",
|
|
41
|
-
"image": {
|
|
42
|
-
"type": "textSlide",
|
|
43
|
-
"slide": {
|
|
44
|
-
"title": "Human Evolution",
|
|
45
|
-
"bullets": [
|
|
46
|
-
"Early Primates",
|
|
47
|
-
"Hominids and Hominins",
|
|
48
|
-
"Australopithecus",
|
|
49
|
-
"Genus Homo Emerges",
|
|
50
|
-
"Homo erectus and Migration",
|
|
51
|
-
"Neanderthals and Other Archaic Humans",
|
|
52
|
-
"Homo sapiens"
|
|
53
|
-
]
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"speaker": "Presenter",
|
|
59
|
-
"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.",
|
|
60
|
-
"image": {
|
|
61
|
-
"type": "markdown",
|
|
62
|
-
"markdown": [
|
|
63
|
-
"# Markdown Table Example",
|
|
64
|
-
"| Item | In Stock | Price |",
|
|
65
|
-
"| :---------------- | :------: | ----: |",
|
|
66
|
-
"| Python Hat | True | 23.99 |",
|
|
67
|
-
"| SQL Hat | True | 23.99 |",
|
|
68
|
-
"| Codecademy Tee | False | 19.99 |",
|
|
69
|
-
"| Codecademy Hoodie | False | 42.99 |"
|
|
70
|
-
]
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
"speaker": "Presenter",
|
|
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
|
-
}
|
|
129
|
-
}
|
|
130
|
-
]
|
|
131
|
-
}
|
|
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 (from <img> tag) to reuse them in the presentation. Mention the reference in one of beats, if it exists. Use the JSON below as a template. chartData is the data for Chart.js",
|
|
5
|
+
"scriptName": "business.json"
|
|
132
6
|
}
|