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.
Files changed (140) hide show
  1. package/README.md +294 -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 +2 -128
  8. package/assets/templates/children_book.json +1 -128
  9. package/assets/templates/coding.json +2 -136
  10. package/assets/templates/comic_strips.json +6 -0
  11. package/assets/templates/ghibli_strips.json +6 -0
  12. package/assets/templates/sensei_and_taro.json +1 -118
  13. package/lib/actions/audio.js +62 -39
  14. package/lib/actions/captions.d.ts +2 -0
  15. package/lib/actions/captions.js +75 -0
  16. package/lib/actions/images.js +34 -13
  17. package/lib/actions/index.d.ts +1 -0
  18. package/lib/actions/index.js +1 -0
  19. package/lib/actions/movie.js +102 -101
  20. package/lib/actions/pdf.js +26 -6
  21. package/lib/actions/translate.js +60 -39
  22. package/lib/agents/add_bgm_agent.js +15 -39
  23. package/lib/agents/combine_audio_files_agent.js +53 -35
  24. package/lib/agents/index.d.ts +2 -3
  25. package/lib/agents/index.js +2 -3
  26. package/lib/agents/tts_google_agent.d.ts +4 -0
  27. package/lib/agents/tts_google_agent.js +51 -0
  28. package/lib/agents/validate_schema_agent.d.ts +19 -0
  29. package/lib/agents/validate_schema_agent.js +36 -0
  30. package/lib/cli/args.d.ts +2 -0
  31. package/lib/cli/args.js +9 -2
  32. package/lib/cli/bin.d.ts +3 -0
  33. package/lib/cli/bin.js +38 -0
  34. package/lib/cli/cli.js +34 -7
  35. package/lib/cli/commands/audio/builder.d.ts +14 -0
  36. package/lib/cli/commands/audio/builder.js +6 -0
  37. package/lib/cli/commands/audio/handler.d.ts +4 -0
  38. package/lib/cli/commands/audio/handler.js +7 -0
  39. package/lib/cli/commands/audio/index.d.ts +4 -0
  40. package/lib/cli/commands/audio/index.js +4 -0
  41. package/lib/cli/commands/image/builder.d.ts +14 -0
  42. package/lib/cli/commands/image/builder.js +6 -0
  43. package/lib/cli/commands/image/handler.d.ts +4 -0
  44. package/lib/cli/commands/image/handler.js +7 -0
  45. package/lib/cli/commands/image/index.d.ts +4 -0
  46. package/lib/cli/commands/image/index.js +4 -0
  47. package/lib/cli/commands/movie/builder.d.ts +18 -0
  48. package/lib/cli/commands/movie/builder.js +19 -0
  49. package/lib/cli/commands/movie/handler.d.ts +6 -0
  50. package/lib/cli/commands/movie/handler.js +12 -0
  51. package/lib/cli/commands/movie/index.d.ts +4 -0
  52. package/lib/cli/commands/movie/index.js +4 -0
  53. package/lib/cli/commands/pdf/builder.d.ts +18 -0
  54. package/lib/cli/commands/pdf/builder.js +19 -0
  55. package/lib/cli/commands/pdf/handler.d.ts +6 -0
  56. package/lib/cli/commands/pdf/handler.js +8 -0
  57. package/lib/cli/commands/pdf/index.d.ts +4 -0
  58. package/lib/cli/commands/pdf/index.js +4 -0
  59. package/lib/cli/commands/tool/index.d.ts +6 -0
  60. package/lib/cli/commands/tool/index.js +8 -0
  61. package/lib/cli/commands/tool/prompt/builder.d.ts +4 -0
  62. package/lib/cli/commands/tool/prompt/builder.js +11 -0
  63. package/lib/cli/commands/tool/prompt/handler.d.ts +4 -0
  64. package/lib/cli/commands/tool/prompt/handler.js +14 -0
  65. package/lib/cli/commands/tool/prompt/index.d.ts +4 -0
  66. package/lib/cli/commands/tool/prompt/index.js +4 -0
  67. package/lib/cli/commands/tool/schema/builder.d.ts +2 -0
  68. package/lib/cli/commands/tool/schema/builder.js +3 -0
  69. package/lib/cli/commands/tool/schema/handler.d.ts +2 -0
  70. package/lib/cli/commands/tool/schema/handler.js +12 -0
  71. package/lib/cli/commands/tool/schema/index.d.ts +4 -0
  72. package/lib/cli/commands/tool/schema/index.js +4 -0
  73. package/lib/cli/commands/tool/scripting/builder.d.ts +20 -0
  74. package/lib/cli/commands/tool/scripting/builder.js +63 -0
  75. package/lib/cli/commands/tool/scripting/handler.d.ts +13 -0
  76. package/lib/cli/commands/tool/scripting/handler.js +36 -0
  77. package/lib/cli/commands/tool/scripting/index.d.ts +4 -0
  78. package/lib/cli/commands/tool/scripting/index.js +4 -0
  79. package/lib/cli/commands/tool/story_to_script/builder.d.ts +20 -0
  80. package/lib/cli/commands/tool/story_to_script/builder.js +61 -0
  81. package/lib/cli/commands/tool/story_to_script/handler.d.ts +13 -0
  82. package/lib/cli/commands/tool/story_to_script/handler.js +36 -0
  83. package/lib/cli/commands/tool/story_to_script/index.d.ts +4 -0
  84. package/lib/cli/commands/tool/story_to_script/index.js +4 -0
  85. package/lib/cli/commands/translate/builder.d.ts +14 -0
  86. package/lib/cli/commands/translate/builder.js +5 -0
  87. package/lib/cli/commands/translate/handler.d.ts +4 -0
  88. package/lib/cli/commands/translate/handler.js +6 -0
  89. package/lib/cli/commands/translate/index.d.ts +4 -0
  90. package/lib/cli/commands/translate/index.js +4 -0
  91. package/lib/cli/common.d.ts +6 -2
  92. package/lib/cli/common.js +18 -7
  93. package/lib/cli/helpers.d.ts +38 -0
  94. package/lib/cli/helpers.js +115 -0
  95. package/lib/cli/tool-args.d.ts +1 -0
  96. package/lib/cli/tool-args.js +1 -1
  97. package/lib/cli/tool-cli.js +8 -0
  98. package/lib/methods/mulmo_script.d.ts +0 -1
  99. package/lib/methods/mulmo_script.js +4 -7
  100. package/lib/methods/mulmo_script_template.d.ts +2 -2
  101. package/lib/methods/mulmo_script_template.js +3 -13
  102. package/lib/methods/mulmo_studio.d.ts +8 -0
  103. package/lib/methods/mulmo_studio.js +24 -0
  104. package/lib/tools/create_mulmo_script_from_url.d.ts +1 -1
  105. package/lib/tools/create_mulmo_script_from_url.js +43 -14
  106. package/lib/tools/create_mulmo_script_interactively.d.ts +1 -1
  107. package/lib/tools/create_mulmo_script_interactively.js +21 -20
  108. package/lib/tools/dump_prompt.js +2 -0
  109. package/lib/tools/story_to_script.d.ts +12 -0
  110. package/lib/tools/story_to_script.js +275 -0
  111. package/lib/types/cli_types.d.ts +14 -0
  112. package/lib/types/cli_types.js +1 -0
  113. package/lib/types/schema.d.ts +637 -1766
  114. package/lib/types/schema.js +77 -8
  115. package/lib/types/type.d.ts +10 -3
  116. package/lib/utils/const.d.ts +5 -0
  117. package/lib/utils/const.js +5 -0
  118. package/lib/utils/ffmpeg_utils.d.ts +12 -0
  119. package/lib/utils/ffmpeg_utils.js +63 -0
  120. package/lib/utils/file.d.ts +8 -3
  121. package/lib/utils/file.js +40 -9
  122. package/lib/utils/filters.js +16 -11
  123. package/lib/utils/image_plugins/chart.js +6 -1
  124. package/lib/utils/image_plugins/html_tailwind.d.ts +3 -0
  125. package/lib/utils/image_plugins/html_tailwind.js +18 -0
  126. package/lib/utils/image_plugins/index.d.ts +2 -1
  127. package/lib/utils/image_plugins/index.js +2 -1
  128. package/lib/utils/image_plugins/mermaid.js +1 -1
  129. package/lib/utils/image_plugins/tailwind.d.ts +3 -0
  130. package/lib/utils/image_plugins/tailwind.js +18 -0
  131. package/lib/utils/image_plugins/text_slide.js +9 -2
  132. package/lib/utils/markdown.d.ts +1 -1
  133. package/lib/utils/markdown.js +8 -4
  134. package/lib/utils/preprocess.d.ts +40 -10
  135. package/lib/utils/preprocess.js +7 -2
  136. package/lib/utils/prompt.d.ts +16 -0
  137. package/lib/utils/prompt.js +74 -0
  138. package/lib/utils/utils.d.ts +10 -5
  139. package/lib/utils/utils.js +37 -17
  140. package/package.json +27 -23
package/README.md CHANGED
@@ -1,13 +1,70 @@
1
- # mulmocast
1
+ # MulmoCast: A Multi-Modal Presentation Tool for the AI-Native Era
2
2
 
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.
3
+ ## Quick Start Guide
4
4
 
5
- ## What is MulmoScript?
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
- A Hello World script is available in [./docs/scripts](./docs/scripts).
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-tool
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-tool scripting`
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
+ [![Watch Ghibli-Style Animation Example](https://github.com/receptron/mulmocast-cli/blob/main/docs/images/introducing-mulmocast-new-era-presentations-thumbnail.jpg?raw=true)](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
- # Generate script with interactive mode
55
- mulmo-tool scripting -i -t children_book -o ./ -s story
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
- # Generate both audio and images, then combine into video
61
- mulmo movie {generated_script_file}
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-tool scripting -u https://example.com
169
+ mulmo tool scripting -u https://example.com
70
170
 
71
171
  # Generate script with interactive mode
72
- mulmo-tool scripting -i
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
- ```bash
128
- mulmo -h
227
+
129
228
  ```
130
- ```bash
131
- mulmo <action> <file>
229
+ mulmo <command> [options]
132
230
 
133
- Run mulmocast
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
- action action to perform
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
- -a, --audiodir audio dir [string]
146
- -i, --imagedir image dir [string]
147
- -f, --force force generate [boolean] [default: false]
148
- --help Show help [boolean]
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
- ### `mulmo-tool -h` Output
153
- Use this command to generate a new MulmoScript from a URL or interactively.
285
+ Generate image files
154
286
 
155
- ```bash
156
- mulmo-tool -h
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
- ```bash
160
- mulmo-tool <action>
301
+ ```
302
+ mulmo movie <file>
161
303
 
162
- Run mulmocast tool
304
+ Generate movie file
163
305
 
164
306
  Positionals:
165
- action action to perform [string] [choices: "scripting", "prompt"]
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
- [string] [choices: "business", "children_book", "coding", "podcast_standard",
178
- "sensei_and_taro"]
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
- --help Show help [boolean]
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>
@@ -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,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
- "script": {
6
- "$mulmocast": {
7
- "version": "1.0",
8
- "credit": "closing"
9
- },
10
- "title": "Sample Title",
11
- "speechParams": {
12
- "speakers": {
13
- "Presenter": {
14
- "voiceId": "shimmer",
15
- "displayName": {
16
- "en": "Presenter",
17
- "ja": "語り手"
18
- }
19
- }
20
- }
21
- },
22
- "lang": "en",
23
- "beats": [
24
- {
25
- "speaker": "Presenter",
26
- "text": "Today we're exploring a fascinating concept that has shaped some of the most innovative companies and leaders of our time: the Reality Distortion Field. This term has become synonymous with visionary leadership and the ability to accomplish seemingly impossible goals.",
27
- "image": {
28
- "type": "textSlide",
29
- "slide": {
30
- "title": "This is the title of this slide",
31
- "bullets": []
32
- }
33
- },
34
- "textSlideParams": {
35
- "cssStyles": ["h1 { margin-top: 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
  }