mulmocast 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +257 -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 +57 -4
- package/assets/templates/comic_strips.json +35 -0
- package/assets/templates/ghibli_strips.json +35 -0
- package/lib/actions/audio.js +24 -11
- package/lib/actions/captions.d.ts +2 -0
- package/lib/actions/captions.js +62 -0
- package/lib/actions/images.js +3 -2
- package/lib/actions/index.d.ts +1 -0
- package/lib/actions/index.js +1 -0
- package/lib/actions/movie.js +78 -86
- package/lib/actions/pdf.js +15 -5
- package/lib/actions/translate.js +32 -26
- package/lib/agents/add_bgm_agent.js +15 -39
- package/lib/agents/combine_audio_files_agent.js +43 -36
- 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 +12 -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 +18 -0
- package/lib/cli/commands/tool/story_to_script/builder.js +53 -0
- package/lib/cli/commands/tool/story_to_script/handler.d.ts +11 -0
- package/lib/cli/commands/tool/story_to_script/handler.js +35 -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.js +2 -12
- 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.js +14 -13
- package/lib/tools/dump_prompt.js +2 -0
- package/lib/tools/story_to_script.d.ts +10 -0
- package/lib/tools/story_to_script.js +201 -0
- package/lib/types/cli_types.d.ts +14 -0
- package/lib/types/cli_types.js +1 -0
- package/lib/types/schema.d.ts +493 -176
- package/lib/types/schema.js +37 -7
- package/lib/types/type.d.ts +6 -1
- package/lib/utils/const.d.ts +1 -0
- package/lib/utils/const.js +1 -0
- package/lib/utils/ffmpeg_utils.d.ts +12 -0
- package/lib/utils/ffmpeg_utils.js +63 -0
- package/lib/utils/file.d.ts +7 -3
- package/lib/utils/file.js +24 -5
- 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 -2
- package/lib/utils/preprocess.d.ts +23 -12
- package/lib/utils/preprocess.js +4 -0
- package/lib/utils/prompt.d.ts +15 -0
- package/lib/utils/prompt.js +57 -0
- package/lib/utils/utils.d.ts +2 -0
- package/lib/utils/utils.js +10 -0
- package/package.json +27 -23
package/README.md
CHANGED
|
@@ -1,13 +1,59 @@
|
|
|
1
|
-
#
|
|
1
|
+
# MulmoCast: A Multi-Modal Presentation Tool for the AI-Native Era
|
|
2
|
+
|
|
3
|
+
**MulmoCast** is a next-generation presentation platform, purpose-built for a world where AI and humans collaborate to create and share ideas.
|
|
4
|
+
|
|
5
|
+
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.
|
|
6
|
+
|
|
7
|
+
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.
|
|
8
|
+
|
|
9
|
+
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.
|
|
10
|
+
|
|
11
|
+
```mermaid
|
|
12
|
+
flowchart TD
|
|
13
|
+
S_TextEditor["Creator"] <--> S_AIChat2("LLM")
|
|
14
|
+
S_AIChat2 --> MulmoScript["MulmoScript"]
|
|
15
|
+
MulmoScript --> MulmoCast["MulmoCast"]
|
|
16
|
+
MulmoCast --> O_Video("Video") & O_Podcast("Podcast") & O_Slideshow("Slideshow") & O_PDF("PDF") & O_Manga("Manga") & O_SwipeAnime("Swipe Anime")
|
|
17
|
+
|
|
18
|
+
MulmoScript@{ shape: div-proc}
|
|
19
|
+
MulmoCast@{ shape: trap-t}
|
|
20
|
+
S_TextEditor:::StoryInput
|
|
21
|
+
S_AIChat2:::ScriptInput
|
|
22
|
+
O_Video:::ScriptOutput
|
|
23
|
+
O_Podcast:::ScriptOutput
|
|
24
|
+
O_Slideshow:::ScriptOutput
|
|
25
|
+
O_PDF:::ScriptOutput
|
|
26
|
+
O_Manga:::ScriptOutput
|
|
27
|
+
O_SwipeAnime:::ScriptOutput
|
|
28
|
+
classDef StoryInput stroke-width:1px, stroke-dasharray:none, stroke:#46EDC8, fill:#DEFFF8, color:#378E7A
|
|
29
|
+
classDef ScriptInput stroke-width:1px, stroke-dasharray:none, stroke:#374D7C, fill:#E2EBFF, color:#374D7C
|
|
30
|
+
classDef ScriptOutput stroke-width:1px, stroke-dasharray:none, stroke:#FBB35A, fill:#FFEFDB, color:#8F632D
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
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.
|
|
2
34
|
|
|
3
|
-
|
|
35
|
+
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.
|
|
4
36
|
|
|
5
|
-
|
|
37
|
+
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.
|
|
38
|
+
|
|
39
|
+
## MulmoScript
|
|
6
40
|
|
|
7
41
|
**MulmoScript** is a simple JSON/YAML format for describing multi-modal content.
|
|
8
42
|
You can define speakers, text, images, and layout — all in one script.
|
|
9
43
|
|
|
10
|
-
|
|
44
|
+
Here is the "Hello World" in MulmoScript.
|
|
45
|
+
|
|
46
|
+
```JSON
|
|
47
|
+
{
|
|
48
|
+
"$mulmocast": {
|
|
49
|
+
"version": "1.0"
|
|
50
|
+
},
|
|
51
|
+
"beats": [
|
|
52
|
+
{ "text": "Hello World" }
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
11
57
|
See [MulmoScript Format](#mulmoscript-format) for details on the structure.
|
|
12
58
|
|
|
13
59
|
## Installation
|
|
@@ -38,40 +84,85 @@ OPENAI_API_KEY=your_openai_api_key
|
|
|
38
84
|
DEFAULT_OPENAI_IMAGE_MODEL=gpt-image-1 # for the advanced image generation model
|
|
39
85
|
GOOGLE_PROJECT_ID=your_google_project_id # for Google's image generation model
|
|
40
86
|
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
|
|
87
|
+
BROWSERLESS_API_TOKEN=your_browserless_api_token # to access web in mulmo tool
|
|
42
88
|
```
|
|
43
89
|
|
|
44
90
|
## Workflow
|
|
45
91
|
|
|
46
|
-
1. Create a MulmoScript JSON file with `mulmo
|
|
92
|
+
1. Create a MulmoScript JSON file with `mulmo tool scripting`
|
|
47
93
|
2. Generate audio with `mulmo audio`
|
|
48
94
|
3. Generate images with `mulmo images`
|
|
49
95
|
4. Create final video with `mulmo movie`
|
|
50
96
|
|
|
51
97
|
## Quick Start
|
|
98
|
+
### Step 1: Generate a MulmoScript with interactive mode
|
|
99
|
+
- Step 1-1: Run the script generation command
|
|
100
|
+
```bash
|
|
101
|
+
mulmo tool scripting -i -t children_book -o ./ -s story
|
|
102
|
+
```
|
|
103
|
+
This will initiate the script creation process.
|
|
104
|
+
|
|
105
|
+
- Step 1-2: Interactive conversation with AI
|
|
106
|
+
|
|
107
|
+
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.
|
|
108
|
+
|
|
109
|
+
### Step 2: Generate both audio and images, then combine into video
|
|
110
|
+
```bash
|
|
111
|
+
mulmo movie {generated_script_file}
|
|
112
|
+
```
|
|
113
|
+
Replace `{generated_script_file}` with the output file from STEP 1, such as `story-1746600802426.json`.
|
|
114
|
+
|
|
115
|
+
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.
|
|
116
|
+
|
|
117
|
+
## Quick Start for Ghibli-Style Animation
|
|
52
118
|
|
|
119
|
+
[](https://www.youtube.com/watch?v=gz_Oe5p2n3s)
|
|
120
|
+
*Click the image above to watch an example of what you can create*
|
|
121
|
+
|
|
122
|
+
### Step 1: Check/Update Environment Setup
|
|
123
|
+
Verify your `.env` file contains:
|
|
53
124
|
```bash
|
|
54
|
-
|
|
55
|
-
|
|
125
|
+
OPENAI_API_KEY=your_openai_api_key
|
|
126
|
+
DEFAULT_OPENAI_IMAGE_MODEL=gpt-image-1 # required for high-quality Ghibli-style images
|
|
56
127
|
```
|
|
57
|
-
After running this command, you'll create a story script through an interactive conversation with the AI.
|
|
58
128
|
|
|
129
|
+
> **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.
|
|
130
|
+
|
|
131
|
+
### Step 2: Generate a Ghibli-style MulmoScript
|
|
59
132
|
```bash
|
|
60
|
-
|
|
61
|
-
|
|
133
|
+
mulmo tool scripting -i -t ghibli_strips -o ./ -s story
|
|
134
|
+
```
|
|
135
|
+
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.
|
|
136
|
+
|
|
137
|
+
### Step 3: Translate the MulmoScript
|
|
138
|
+
```bash
|
|
139
|
+
mulmo translate {generated_script_file_from_step_2}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Step 4: Generate video with Japanese subtitles
|
|
143
|
+
```bash
|
|
144
|
+
mulmo movie {generated_script_file_from_step_2} -c ja
|
|
145
|
+
```
|
|
146
|
+
The `-c ja` flag adds Japanese subtitles to your video.
|
|
147
|
+
|
|
148
|
+
When the process completes, the CLI will display the path to your generated video file:
|
|
149
|
+
```bash
|
|
150
|
+
Video created successfully! 14.939 sec
|
|
151
|
+
writing: /Users/username/path/to/output/story-1747834931950__ja.mp4
|
|
62
152
|
```
|
|
63
|
-
Replace `{generated_script_file}` with the output file from the previous command, such as `story-1746600802426.json`.
|
|
64
153
|
|
|
65
154
|
## Generate MulmoScript
|
|
66
155
|
|
|
67
156
|
```bash
|
|
68
157
|
# Generate script from web content (requires Browserless API KEY)
|
|
69
|
-
mulmo
|
|
158
|
+
mulmo tool scripting -u https://example.com
|
|
70
159
|
|
|
71
160
|
# Generate script with interactive mode
|
|
72
|
-
mulmo
|
|
161
|
+
mulmo tool scripting -i
|
|
73
162
|
```
|
|
74
163
|
|
|
164
|
+
When using the `sensei_and_taro` template, a Nijivoice API key is required.
|
|
165
|
+
|
|
75
166
|
## Generate content from MulmoScript
|
|
76
167
|
|
|
77
168
|
Mulmo provides several commands to handle different aspects of content creation:
|
|
@@ -121,52 +212,150 @@ https://github.com/receptron/mulmocast-cli/tree/main/scripts
|
|
|
121
212
|
|
|
122
213
|
CLI Usage
|
|
123
214
|
|
|
124
|
-
### `mulmo -h` Output
|
|
125
|
-
Use this command to generate content (audio, images, movie) from an existing MulmoScript.
|
|
126
215
|
|
|
127
|
-
|
|
128
|
-
mulmo -h
|
|
216
|
+
|
|
129
217
|
```
|
|
130
|
-
|
|
131
|
-
|
|
218
|
+
mulmo <command> [options]
|
|
219
|
+
|
|
220
|
+
Commands:
|
|
221
|
+
mulmo translate <file> Translate Mulmo script
|
|
222
|
+
mulmo audio <file> Generate audio files
|
|
223
|
+
mulmo images <file> Generate image files
|
|
224
|
+
mulmo movie <file> Generate movie file
|
|
225
|
+
mulmo pdf <file> Generate PDF files
|
|
226
|
+
mulmo tool <command> Generate Mulmo script and other tools
|
|
227
|
+
|
|
228
|
+
Options:
|
|
229
|
+
--version Show version number [boolean]
|
|
230
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
231
|
+
-h, --help Show help [boolean]
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
```
|
|
235
|
+
mulmo translate <file>
|
|
236
|
+
|
|
237
|
+
Translate Mulmo script
|
|
238
|
+
|
|
239
|
+
Positionals:
|
|
240
|
+
file Mulmo Script File [string] [required]
|
|
241
|
+
|
|
242
|
+
Options:
|
|
243
|
+
--version Show version number [boolean]
|
|
244
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
245
|
+
-h, --help Show help [boolean]
|
|
246
|
+
-o, --outdir output dir [string]
|
|
247
|
+
-b, --basedir base dir [string]
|
|
248
|
+
-l, --lang target language [string] [choices: "en", "ja"]
|
|
249
|
+
-f, --force Force regenerate [boolean] [default: false]
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
mulmo audio <file>
|
|
132
254
|
|
|
133
|
-
|
|
255
|
+
Generate audio files
|
|
134
256
|
|
|
135
257
|
Positionals:
|
|
136
|
-
|
|
137
|
-
[string] [choices: "translate", "audio", "images", "movie", "preprocess"]
|
|
138
|
-
file Mulmo Script File [string]
|
|
258
|
+
file Mulmo Script File [string] [required]
|
|
139
259
|
|
|
140
260
|
Options:
|
|
141
261
|
--version Show version number [boolean]
|
|
142
262
|
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
263
|
+
-h, --help Show help [boolean]
|
|
143
264
|
-o, --outdir output dir [string]
|
|
144
265
|
-b, --basedir base dir [string]
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
|
|
266
|
+
-l, --lang target language [string] [choices: "en", "ja"]
|
|
267
|
+
-f, --force Force regenerate [boolean] [default: false]
|
|
268
|
+
-a, --audiodir Audio output directory [string]
|
|
269
|
+
```
|
|
149
270
|
|
|
150
271
|
```
|
|
272
|
+
mulmo images <file>
|
|
151
273
|
|
|
152
|
-
|
|
153
|
-
Use this command to generate a new MulmoScript from a URL or interactively.
|
|
274
|
+
Generate image files
|
|
154
275
|
|
|
155
|
-
|
|
156
|
-
|
|
276
|
+
Positionals:
|
|
277
|
+
file Mulmo Script File [string] [required]
|
|
278
|
+
|
|
279
|
+
Options:
|
|
280
|
+
--version Show version number [boolean]
|
|
281
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
282
|
+
-h, --help Show help [boolean]
|
|
283
|
+
-o, --outdir output dir [string]
|
|
284
|
+
-b, --basedir base dir [string]
|
|
285
|
+
-l, --lang target language [string] [choices: "en", "ja"]
|
|
286
|
+
-f, --force Force regenerate [boolean] [default: false]
|
|
287
|
+
-i, --imagedir Image output directory [string]
|
|
157
288
|
```
|
|
158
289
|
|
|
159
|
-
```
|
|
160
|
-
mulmo
|
|
290
|
+
```
|
|
291
|
+
mulmo movie <file>
|
|
161
292
|
|
|
162
|
-
|
|
293
|
+
Generate movie file
|
|
163
294
|
|
|
164
295
|
Positionals:
|
|
165
|
-
|
|
296
|
+
file Mulmo Script File [string] [required]
|
|
297
|
+
|
|
298
|
+
Options:
|
|
299
|
+
--version Show version number [boolean]
|
|
300
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
301
|
+
-h, --help Show help [boolean]
|
|
302
|
+
-o, --outdir output dir [string]
|
|
303
|
+
-b, --basedir base dir [string]
|
|
304
|
+
-l, --lang target language [string] [choices: "en", "ja"]
|
|
305
|
+
-f, --force Force regenerate [boolean] [default: false]
|
|
306
|
+
-a, --audiodir Audio output directory [string]
|
|
307
|
+
-i, --imagedir Image output directory [string]
|
|
308
|
+
-c, --caption Video captions [string] [choices: "en", "ja"]
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
```
|
|
312
|
+
mulmo pdf <file>
|
|
313
|
+
|
|
314
|
+
Generate PDF files
|
|
315
|
+
|
|
316
|
+
Positionals:
|
|
317
|
+
file Mulmo Script File [string] [required]
|
|
318
|
+
|
|
319
|
+
Options:
|
|
320
|
+
--version Show version number [boolean]
|
|
321
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
322
|
+
-h, --help Show help [boolean]
|
|
323
|
+
-o, --outdir output dir [string]
|
|
324
|
+
-b, --basedir base dir [string]
|
|
325
|
+
-l, --lang target language [string] [choices: "en", "ja"]
|
|
326
|
+
-f, --force Force regenerate [boolean] [default: false]
|
|
327
|
+
-i, --imagedir Image output directory [string]
|
|
328
|
+
--pdf_mode PDF mode
|
|
329
|
+
[string] [choices: "slide", "talk", "handout"] [default: "slide"]
|
|
330
|
+
--pdf_size PDF paper size (default: letter)
|
|
331
|
+
[choices: "letter", "a4"] [default: "letter"]
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
```
|
|
335
|
+
mulmo tool <command>
|
|
336
|
+
|
|
337
|
+
Generate Mulmo script and other tools
|
|
338
|
+
|
|
339
|
+
Commands:
|
|
340
|
+
mulmo tool scripting Generate mulmocast script
|
|
341
|
+
mulmo tool prompt Dump prompt from template
|
|
342
|
+
mulmo tool schema Dump mulmocast schema
|
|
343
|
+
|
|
344
|
+
Options:
|
|
345
|
+
--version Show version number [boolean]
|
|
346
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
347
|
+
-h, --help Show help [boolean]
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
```
|
|
351
|
+
mulmo tool scripting
|
|
352
|
+
|
|
353
|
+
Generate mulmocast script
|
|
166
354
|
|
|
167
355
|
Options:
|
|
168
356
|
--version Show version number [boolean]
|
|
169
357
|
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
358
|
+
-h, --help Show help [boolean]
|
|
170
359
|
-o, --outdir output dir [string]
|
|
171
360
|
-b, --basedir base dir [string]
|
|
172
361
|
-u, --url URLs to reference (required when not in interactive mode)
|
|
@@ -174,14 +363,43 @@ Options:
|
|
|
174
363
|
-i, --interactive Generate script in interactive mode with user prompts
|
|
175
364
|
[boolean]
|
|
176
365
|
-t, --template Template name to use
|
|
177
|
-
|
|
178
|
-
|
|
366
|
+
[string] [choices: "business", "children_book", "coding", "comic_strips",
|
|
367
|
+
"ghibli_strips", "podcast_standard", "sensei_and_taro"]
|
|
179
368
|
-c, --cache cache dir [string]
|
|
180
369
|
-s, --script script filename [string] [default: "script"]
|
|
181
|
-
--
|
|
370
|
+
--llm_agent llm agent
|
|
371
|
+
[string] [choices: "openAIAgent", "anthropicAgent", "geminiAgent",
|
|
372
|
+
"groqAgent"]
|
|
373
|
+
--llm_model llm model [string]
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
```
|
|
377
|
+
mulmo tool prompt
|
|
378
|
+
|
|
379
|
+
Dump prompt from template
|
|
380
|
+
|
|
381
|
+
Options:
|
|
382
|
+
--version Show version number [boolean]
|
|
383
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
384
|
+
-h, --help Show help [boolean]
|
|
385
|
+
-t, --template Template name to use
|
|
386
|
+
[string] [choices: "business", "children_book", "coding", "comic_strips",
|
|
387
|
+
"ghibli_strips", "podcast_standard", "sensei_and_taro"]
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
```
|
|
391
|
+
mulmo tool schema
|
|
392
|
+
|
|
393
|
+
Dump mulmocast schema
|
|
394
|
+
|
|
395
|
+
Options:
|
|
396
|
+
--version Show version number [boolean]
|
|
397
|
+
-v, --verbose verbose log [boolean] [required] [default: false]
|
|
398
|
+
-h, --help Show help [boolean]
|
|
182
399
|
```
|
|
183
400
|
|
|
184
401
|
|
|
402
|
+
|
|
185
403
|
## Contributing
|
|
186
404
|
|
|
187
405
|
For developers interested in contributing to this project, please see [CONTRIBUTING.md](./CONTRIBUTING.md).
|
|
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,7 +1,7 @@
|
|
|
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",
|
|
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. 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
5
|
"script": {
|
|
6
6
|
"$mulmocast": {
|
|
7
7
|
"version": "1.0",
|
|
@@ -19,6 +19,13 @@
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
|
+
"references": [
|
|
23
|
+
{
|
|
24
|
+
"url": "https://www.somegreatwebsite.com/article/123",
|
|
25
|
+
"title": "Title of the article we are referencing",
|
|
26
|
+
"type": "article"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
22
29
|
"lang": "en",
|
|
23
30
|
"beats": [
|
|
24
31
|
{
|
|
@@ -30,9 +37,6 @@
|
|
|
30
37
|
"title": "This is the title of this slide",
|
|
31
38
|
"bullets": []
|
|
32
39
|
}
|
|
33
|
-
},
|
|
34
|
-
"textSlideParams": {
|
|
35
|
-
"cssStyles": ["h1 { margin-top: 300px }"]
|
|
36
40
|
}
|
|
37
41
|
},
|
|
38
42
|
{
|
|
@@ -116,6 +120,55 @@
|
|
|
116
120
|
}
|
|
117
121
|
}
|
|
118
122
|
},
|
|
123
|
+
{
|
|
124
|
+
"speaker": "Presenter",
|
|
125
|
+
"text": "This is a tailwind html format.",
|
|
126
|
+
"image": {
|
|
127
|
+
"type": "html_tailwind",
|
|
128
|
+
"html": [
|
|
129
|
+
"<main class=\"flex-grow\">",
|
|
130
|
+
" <!-- Hero Section -->",
|
|
131
|
+
" <section class=\"bg-blue-600 text-white py-20\">",
|
|
132
|
+
" <div class=\"container mx-auto px-6 text-center\">",
|
|
133
|
+
" <h1 class=\"text-4xl md:text-5xl font-bold mb-4\">Welcome to Mulmocast</h1>",
|
|
134
|
+
" <p class=\"text-lg md:text-xl mb-8\">A modern web experience powered by Tailwind CSS</p>",
|
|
135
|
+
" <a href=\"#features\" class=\"bg-white text-blue-600 px-6 py-3 rounded-lg font-semibold shadow hover:bg-gray-100 transition\">",
|
|
136
|
+
" Learn More",
|
|
137
|
+
" </a>",
|
|
138
|
+
" </div>",
|
|
139
|
+
" </section>",
|
|
140
|
+
"",
|
|
141
|
+
" <!-- Features Section -->",
|
|
142
|
+
" <section id=\"features\" class=\"py-16 bg-gray-100\">",
|
|
143
|
+
" <div class=\"container mx-auto px-6\">",
|
|
144
|
+
" <div class=\"grid grid-cols-1 md:grid-cols-3 gap-8 text-center\">",
|
|
145
|
+
" <div>",
|
|
146
|
+
" <div class=\"text-blue-600 text-4xl mb-2\">⚡</div>",
|
|
147
|
+
" <h3 class=\"text-xl font-semibold mb-2\">Fast</h3>",
|
|
148
|
+
" <p class=\"text-gray-600\">Built with performance in mind using modern tools.</p>",
|
|
149
|
+
" </div>",
|
|
150
|
+
" <div>",
|
|
151
|
+
" <div class=\"text-blue-600 text-4xl mb-2\">🎨</div>",
|
|
152
|
+
" <h3 class=\"text-xl font-semibold mb-2\">Beautiful</h3>",
|
|
153
|
+
" <p class=\"text-gray-600\">Styled with Tailwind CSS for clean, responsive design.</p>",
|
|
154
|
+
" </div>",
|
|
155
|
+
" <div>",
|
|
156
|
+
" <div class=\"text-blue-600 text-4xl mb-2\">🚀</div>",
|
|
157
|
+
" <h3 class=\"text-xl font-semibold mb-2\">Launch Ready</h3>",
|
|
158
|
+
" <p class=\"text-gray-600\">Easy to deploy and extend for your next big idea.</p>",
|
|
159
|
+
" </div>",
|
|
160
|
+
" </div>",
|
|
161
|
+
" </div>",
|
|
162
|
+
" </section>",
|
|
163
|
+
"</main>",
|
|
164
|
+
"",
|
|
165
|
+
"<!-- Footer -->",
|
|
166
|
+
"<footer class=\"bg-white text-gray-500 text-center py-6 border-t\">",
|
|
167
|
+
" 2025 Mulmocast.",
|
|
168
|
+
"</footer>"
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
},
|
|
119
172
|
{
|
|
120
173
|
"speaker": "Presenter",
|
|
121
174
|
"text": "This is the image of a pingpong ball.",
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "American Comic Strips",
|
|
3
|
+
"description": "Template for Dilbert-style comic strips.",
|
|
4
|
+
"systemPrompt": "Generate a script for a presentation of the given topic. Another AI will generate comic strips for each beat based on the text description of that beat. Mention the reference in one of beats, if it exists. Use the JSON below as a template.",
|
|
5
|
+
"script": {
|
|
6
|
+
"$mulmocast": {
|
|
7
|
+
"version": "1.0",
|
|
8
|
+
"credit": "closing"
|
|
9
|
+
},
|
|
10
|
+
"title": "Sample Title",
|
|
11
|
+
"lang": "en",
|
|
12
|
+
"canvasSize": {
|
|
13
|
+
"width": 1536,
|
|
14
|
+
"height": 1024
|
|
15
|
+
},
|
|
16
|
+
"imageParams": {
|
|
17
|
+
"style": "<style>A multi panel comic strips. 1990s American workplace humor. Clean, minimalist line art with muted colors. One character is a nerdy office worker with glasses</style>"
|
|
18
|
+
},
|
|
19
|
+
"references": [
|
|
20
|
+
{
|
|
21
|
+
"url": "https://www.somegreatwebsite.com/article/123",
|
|
22
|
+
"title": "Title of the article we are referencing",
|
|
23
|
+
"type": "article"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"beats": [
|
|
27
|
+
{
|
|
28
|
+
"text": "Today we're exploring a fascinating concept that has shaped some of the most innovative companies and leaders of our time. This story is based on an Awesome News articled, titled 'The reality distortion field'. This term has become synonymous with visionary leadership and the ability to accomplish seemingly impossible goals."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"text": "The Reality Distortion Field is a concept that was first introduced by Steve Jobs, the co-founder of Apple. It refers to the ability of a leader to convince people that something is possible, even if it seems impossible."
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "American Comic Strips",
|
|
3
|
+
"description": "Template for Dilbert-style comic strips.",
|
|
4
|
+
"systemPrompt": "Generate a script for a presentation of the given topic. Another AI will generate comic strips for each beat based on the text description of that beat. Mention the reference in one of beats, if it exists. Use the JSON below as a template.",
|
|
5
|
+
"script": {
|
|
6
|
+
"$mulmocast": {
|
|
7
|
+
"version": "1.0",
|
|
8
|
+
"credit": "closing"
|
|
9
|
+
},
|
|
10
|
+
"title": "Sample Title",
|
|
11
|
+
"lang": "en",
|
|
12
|
+
"canvasSize": {
|
|
13
|
+
"width": 1536,
|
|
14
|
+
"height": 1024
|
|
15
|
+
},
|
|
16
|
+
"imageParams": {
|
|
17
|
+
"style": "<style>A multi panel comic strips. Ghibli style. The presenter is a young woman with a dark short hair with glasses.</style>"
|
|
18
|
+
},
|
|
19
|
+
"references": [
|
|
20
|
+
{
|
|
21
|
+
"url": "https://www.somegreatwebsite.com/article/123",
|
|
22
|
+
"title": "The Awesome News: The reality distortion field",
|
|
23
|
+
"type": "article"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"beats": [
|
|
27
|
+
{
|
|
28
|
+
"text": "Today we're exploring a fascinating concept that has shaped some of the most innovative companies and leaders of our time. This story is based on an Awesome News articled, titled 'The reality distortion field'. This term has become synonymous with visionary leadership and the ability to accomplish seemingly impossible goals."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"text": "The Reality Distortion Field is a concept that was first introduced by Steve Jobs, the co-founder of Apple. It refers to the ability of a leader to convince people that something is possible, even if it seems impossible."
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
}
|