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.
Files changed (132) hide show
  1. package/README.md +257 -39
  2. package/assets/audio/silent60sec.mp3 +0 -0
  3. package/assets/html/caption.html +45 -0
  4. package/assets/html/chart.html +1 -1
  5. package/assets/html/mermaid.html +6 -2
  6. package/assets/html/tailwind.html +13 -0
  7. package/assets/templates/business.json +57 -4
  8. package/assets/templates/comic_strips.json +35 -0
  9. package/assets/templates/ghibli_strips.json +35 -0
  10. package/lib/actions/audio.js +24 -11
  11. package/lib/actions/captions.d.ts +2 -0
  12. package/lib/actions/captions.js +62 -0
  13. package/lib/actions/images.js +3 -2
  14. package/lib/actions/index.d.ts +1 -0
  15. package/lib/actions/index.js +1 -0
  16. package/lib/actions/movie.js +78 -86
  17. package/lib/actions/pdf.js +15 -5
  18. package/lib/actions/translate.js +32 -26
  19. package/lib/agents/add_bgm_agent.js +15 -39
  20. package/lib/agents/combine_audio_files_agent.js +43 -36
  21. package/lib/agents/index.d.ts +2 -3
  22. package/lib/agents/index.js +2 -3
  23. package/lib/agents/tts_google_agent.d.ts +4 -0
  24. package/lib/agents/tts_google_agent.js +51 -0
  25. package/lib/agents/validate_schema_agent.d.ts +19 -0
  26. package/lib/agents/validate_schema_agent.js +36 -0
  27. package/lib/cli/args.d.ts +2 -0
  28. package/lib/cli/args.js +9 -2
  29. package/lib/cli/bin.d.ts +3 -0
  30. package/lib/cli/bin.js +38 -0
  31. package/lib/cli/cli.js +34 -7
  32. package/lib/cli/commands/audio/builder.d.ts +14 -0
  33. package/lib/cli/commands/audio/builder.js +6 -0
  34. package/lib/cli/commands/audio/handler.d.ts +4 -0
  35. package/lib/cli/commands/audio/handler.js +7 -0
  36. package/lib/cli/commands/audio/index.d.ts +4 -0
  37. package/lib/cli/commands/audio/index.js +4 -0
  38. package/lib/cli/commands/image/builder.d.ts +14 -0
  39. package/lib/cli/commands/image/builder.js +6 -0
  40. package/lib/cli/commands/image/handler.d.ts +4 -0
  41. package/lib/cli/commands/image/handler.js +7 -0
  42. package/lib/cli/commands/image/index.d.ts +4 -0
  43. package/lib/cli/commands/image/index.js +4 -0
  44. package/lib/cli/commands/movie/builder.d.ts +18 -0
  45. package/lib/cli/commands/movie/builder.js +19 -0
  46. package/lib/cli/commands/movie/handler.d.ts +6 -0
  47. package/lib/cli/commands/movie/handler.js +12 -0
  48. package/lib/cli/commands/movie/index.d.ts +4 -0
  49. package/lib/cli/commands/movie/index.js +4 -0
  50. package/lib/cli/commands/pdf/builder.d.ts +18 -0
  51. package/lib/cli/commands/pdf/builder.js +19 -0
  52. package/lib/cli/commands/pdf/handler.d.ts +6 -0
  53. package/lib/cli/commands/pdf/handler.js +8 -0
  54. package/lib/cli/commands/pdf/index.d.ts +4 -0
  55. package/lib/cli/commands/pdf/index.js +4 -0
  56. package/lib/cli/commands/tool/index.d.ts +6 -0
  57. package/lib/cli/commands/tool/index.js +8 -0
  58. package/lib/cli/commands/tool/prompt/builder.d.ts +4 -0
  59. package/lib/cli/commands/tool/prompt/builder.js +11 -0
  60. package/lib/cli/commands/tool/prompt/handler.d.ts +4 -0
  61. package/lib/cli/commands/tool/prompt/handler.js +14 -0
  62. package/lib/cli/commands/tool/prompt/index.d.ts +4 -0
  63. package/lib/cli/commands/tool/prompt/index.js +4 -0
  64. package/lib/cli/commands/tool/schema/builder.d.ts +2 -0
  65. package/lib/cli/commands/tool/schema/builder.js +3 -0
  66. package/lib/cli/commands/tool/schema/handler.d.ts +2 -0
  67. package/lib/cli/commands/tool/schema/handler.js +12 -0
  68. package/lib/cli/commands/tool/schema/index.d.ts +4 -0
  69. package/lib/cli/commands/tool/schema/index.js +4 -0
  70. package/lib/cli/commands/tool/scripting/builder.d.ts +20 -0
  71. package/lib/cli/commands/tool/scripting/builder.js +63 -0
  72. package/lib/cli/commands/tool/scripting/handler.d.ts +12 -0
  73. package/lib/cli/commands/tool/scripting/handler.js +36 -0
  74. package/lib/cli/commands/tool/scripting/index.d.ts +4 -0
  75. package/lib/cli/commands/tool/scripting/index.js +4 -0
  76. package/lib/cli/commands/tool/story_to_script/builder.d.ts +18 -0
  77. package/lib/cli/commands/tool/story_to_script/builder.js +53 -0
  78. package/lib/cli/commands/tool/story_to_script/handler.d.ts +11 -0
  79. package/lib/cli/commands/tool/story_to_script/handler.js +35 -0
  80. package/lib/cli/commands/tool/story_to_script/index.d.ts +4 -0
  81. package/lib/cli/commands/tool/story_to_script/index.js +4 -0
  82. package/lib/cli/commands/translate/builder.d.ts +14 -0
  83. package/lib/cli/commands/translate/builder.js +5 -0
  84. package/lib/cli/commands/translate/handler.d.ts +4 -0
  85. package/lib/cli/commands/translate/handler.js +6 -0
  86. package/lib/cli/commands/translate/index.d.ts +4 -0
  87. package/lib/cli/commands/translate/index.js +4 -0
  88. package/lib/cli/common.d.ts +6 -2
  89. package/lib/cli/common.js +18 -7
  90. package/lib/cli/helpers.d.ts +38 -0
  91. package/lib/cli/helpers.js +115 -0
  92. package/lib/cli/tool-args.d.ts +1 -0
  93. package/lib/cli/tool-args.js +1 -1
  94. package/lib/cli/tool-cli.js +8 -0
  95. package/lib/methods/mulmo_script.d.ts +0 -1
  96. package/lib/methods/mulmo_script.js +4 -7
  97. package/lib/methods/mulmo_script_template.js +2 -12
  98. package/lib/tools/create_mulmo_script_from_url.d.ts +1 -1
  99. package/lib/tools/create_mulmo_script_from_url.js +43 -14
  100. package/lib/tools/create_mulmo_script_interactively.js +14 -13
  101. package/lib/tools/dump_prompt.js +2 -0
  102. package/lib/tools/story_to_script.d.ts +10 -0
  103. package/lib/tools/story_to_script.js +201 -0
  104. package/lib/types/cli_types.d.ts +14 -0
  105. package/lib/types/cli_types.js +1 -0
  106. package/lib/types/schema.d.ts +493 -176
  107. package/lib/types/schema.js +37 -7
  108. package/lib/types/type.d.ts +6 -1
  109. package/lib/utils/const.d.ts +1 -0
  110. package/lib/utils/const.js +1 -0
  111. package/lib/utils/ffmpeg_utils.d.ts +12 -0
  112. package/lib/utils/ffmpeg_utils.js +63 -0
  113. package/lib/utils/file.d.ts +7 -3
  114. package/lib/utils/file.js +24 -5
  115. package/lib/utils/image_plugins/chart.js +6 -1
  116. package/lib/utils/image_plugins/html_tailwind.d.ts +3 -0
  117. package/lib/utils/image_plugins/html_tailwind.js +18 -0
  118. package/lib/utils/image_plugins/index.d.ts +2 -1
  119. package/lib/utils/image_plugins/index.js +2 -1
  120. package/lib/utils/image_plugins/mermaid.js +1 -1
  121. package/lib/utils/image_plugins/tailwind.d.ts +3 -0
  122. package/lib/utils/image_plugins/tailwind.js +18 -0
  123. package/lib/utils/image_plugins/text_slide.js +9 -2
  124. package/lib/utils/markdown.d.ts +1 -1
  125. package/lib/utils/markdown.js +8 -2
  126. package/lib/utils/preprocess.d.ts +23 -12
  127. package/lib/utils/preprocess.js +4 -0
  128. package/lib/utils/prompt.d.ts +15 -0
  129. package/lib/utils/prompt.js +57 -0
  130. package/lib/utils/utils.d.ts +2 -0
  131. package/lib/utils/utils.js +10 -0
  132. package/package.json +27 -23
package/README.md CHANGED
@@ -1,13 +1,59 @@
1
- # mulmocast
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
- 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.
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
- ## What is MulmoScript?
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
- A Hello World script is available in [./docs/scripts](./docs/scripts).
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-tool
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-tool scripting`
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
+ [![Watch Ghibli-Style Animation Example](https://img.youtube.com/vi/gz_Oe5p2n3s/0.jpg)](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
- # Generate script with interactive mode
55
- mulmo-tool scripting -i -t children_book -o ./ -s story
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
- # Generate both audio and images, then combine into video
61
- mulmo movie {generated_script_file}
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-tool scripting -u https://example.com
158
+ mulmo tool scripting -u https://example.com
70
159
 
71
160
  # Generate script with interactive mode
72
- mulmo-tool scripting -i
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
- ```bash
128
- mulmo -h
216
+
129
217
  ```
130
- ```bash
131
- mulmo <action> <file>
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
- Run mulmocast
255
+ Generate audio files
134
256
 
135
257
  Positionals:
136
- action action to perform
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
- -a, --audiodir audio dir [string]
146
- -i, --imagedir image dir [string]
147
- -f, --force force generate [boolean] [default: false]
148
- --help Show help [boolean]
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
- ### `mulmo-tool -h` Output
153
- Use this command to generate a new MulmoScript from a URL or interactively.
274
+ Generate image files
154
275
 
155
- ```bash
156
- mulmo-tool -h
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
- ```bash
160
- mulmo-tool <action>
290
+ ```
291
+ mulmo movie <file>
161
292
 
162
- Run mulmocast tool
293
+ Generate movie file
163
294
 
164
295
  Positionals:
165
- action action to perform [string] [choices: "scripting", "prompt"]
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
- [string] [choices: "business", "children_book", "coding", "podcast_standard",
178
- "sensei_and_taro"]
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
- --help Show help [boolean]
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>
@@ -7,7 +7,7 @@
7
7
  <style>
8
8
  ${style}
9
9
  .chart-container {
10
- width: ${width}px;
10
+ width: ${chart_width}px;
11
11
  margin: 0 auto;
12
12
  }
13
13
  </style>
@@ -23,7 +23,7 @@
23
23
  }
24
24
  .mermaid svg {
25
25
  max-width: 100%;
26
- max-height: 100%;
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
+ }