mulmocast 0.0.7 → 0.0.9

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 (36) hide show
  1. package/assets/templates/akira_comic.json +28 -0
  2. package/assets/templates/children_book.json +13 -0
  3. package/assets/templates/comic_strips.json +14 -1
  4. package/assets/templates/drslump_comic.json +28 -0
  5. package/assets/templates/ghibli_comic.json +28 -0
  6. package/assets/templates/ghost_comic.json +35 -0
  7. package/assets/templates/onepiece_comic.json +28 -0
  8. package/assets/templates/sensei_and_taro.json +21 -0
  9. package/lib/actions/audio.js +2 -2
  10. package/lib/actions/captions.js +2 -2
  11. package/lib/actions/images.js +48 -6
  12. package/lib/actions/movie.d.ts +1 -1
  13. package/lib/actions/movie.js +13 -11
  14. package/lib/actions/pdf.js +6 -4
  15. package/lib/actions/translate.js +2 -2
  16. package/lib/agents/image_openai_agent.d.ts +1 -0
  17. package/lib/agents/image_openai_agent.js +15 -3
  18. package/lib/cli/bin.js +7 -0
  19. package/lib/cli/helpers.js +2 -1
  20. package/lib/tools/create_mulmo_script_from_url.js +2 -2
  21. package/lib/tools/create_mulmo_script_interactively.js +2 -2
  22. package/lib/tools/story_to_script.js +2 -2
  23. package/lib/types/schema.d.ts +1738 -228
  24. package/lib/types/schema.js +8 -2
  25. package/lib/utils/file.js +20 -9
  26. package/lib/utils/pdf.d.ts +1 -0
  27. package/lib/utils/pdf.js +5 -3
  28. package/lib/utils/preprocess.d.ts +50 -16
  29. package/package.json +10 -9
  30. package/scripts/templates/business.json +201 -0
  31. package/scripts/templates/children_book.json +90 -0
  32. package/scripts/templates/coding.json +130 -0
  33. package/scripts/templates/image_prompts_template.json +41 -0
  34. package/scripts/templates/sensei_and_taro.json +116 -0
  35. package/scripts/templates/text_only_template.json +35 -0
  36. package/assets/templates/ghibli_strips.json +0 -6
@@ -0,0 +1,130 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.0",
4
+ "credit": "closing"
5
+ },
6
+ "title": "Sample Title",
7
+ "lang": "en",
8
+ "beats": [
9
+ {
10
+ "text": "This is a slide, which just displays the title of this presentation.",
11
+ "image": {
12
+ "type": "textSlide",
13
+ "slide": {
14
+ "title": "This is the title of the presentation"
15
+ }
16
+ }
17
+ },
18
+ {
19
+ "text": "This is ta slide, which just displays the title and the presenter's name of this presentation.",
20
+ "image": {
21
+ "type": "textSlide",
22
+ "slide": {
23
+ "title": "This is the title of the presentation",
24
+ "subtitle": "Tom Johnson"
25
+ }
26
+ }
27
+ },
28
+ {
29
+ "text": "Here is the sample code",
30
+ "image": {
31
+ "type": "markdown",
32
+ "markdown": "# Markdown Table Example\n```TypeScript\nconst main = () => {\n console.log('Hello World')\n}\n```"
33
+ }
34
+ },
35
+ {
36
+ "text": "Here is two sets of code, side by side",
37
+ "image": {
38
+ "type": "markdown",
39
+ "markdown": "# Hello World in two languages\n<div style=\"display: flex; gap: 16px;\">\n <pre>// JavaScript example\nfunction greet(name) {\n console.log(`Hello, ${name}!`);\n}\ngreet(\"World\");\n</pre>\n\n <pre># Python example\ndef greet(name):\n print(f\"Hello, {name}!\")\n\ngreet(\"World\")\n</pre>\n</div>"
40
+ }
41
+ },
42
+ {
43
+ "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",
44
+ "image": {
45
+ "type": "textSlide",
46
+ "slide": {
47
+ "title": "Human Evolution",
48
+ "bullets": [
49
+ "Early Primates",
50
+ "Hominids and Hominins",
51
+ "Australopithecus",
52
+ "Genus Homo Emerges",
53
+ "Homo erectus and Migration",
54
+ "Neanderthals and Other Archaic Humans",
55
+ "Homo sapiens"
56
+ ]
57
+ }
58
+ }
59
+ },
60
+ {
61
+ "text": "This table shows the items in the store.",
62
+ "image": {
63
+ "type": "markdown",
64
+ "markdown": [
65
+ "# Markdown Table Example",
66
+ "| Item | In Stock | Price |",
67
+ "| :---------------- | :------: | ----: |",
68
+ "| Python Hat | True | 23.99 |",
69
+ "| SQL Hat | True | 23.99 |",
70
+ "| Codecademy Tee | False | 19.99 |",
71
+ "| Codecademy Hoodie | False | 42.99 |"
72
+ ]
73
+ }
74
+ },
75
+ {
76
+ "text": "Next, let's look at a diagram of our business process flow. This illustrates the key steps from product development to sales.",
77
+ "image": {
78
+ "type": "mermaid",
79
+ "title": "Business Process Flow",
80
+ "code": {
81
+ "kind": "text",
82
+ "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"
83
+ }
84
+ }
85
+ },
86
+ {
87
+ "text": "This page shows the sales and profits of this company from January 2024 to June 2024.",
88
+ "image": {
89
+ "type": "chart",
90
+ "title": "Sales and Profits (from Jan to June)",
91
+ "chartData": {
92
+ "type": "bar",
93
+ "data": {
94
+ "labels": ["January", "February", "March", "April", "May", "June"],
95
+ "datasets": [
96
+ {
97
+ "label": "Revenue ($1000s)",
98
+ "data": [120, 135, 180, 155, 170, 190],
99
+ "backgroundColor": "rgba(54, 162, 235, 0.5)",
100
+ "borderColor": "rgba(54, 162, 235, 1)",
101
+ "borderWidth": 1
102
+ },
103
+ {
104
+ "label": "Profit ($1000s)",
105
+ "data": [45, 52, 68, 53, 61, 73],
106
+ "backgroundColor": "rgba(75, 192, 192, 0.5)",
107
+ "borderColor": "rgba(75, 192, 192, 1)",
108
+ "borderWidth": 1
109
+ }
110
+ ]
111
+ },
112
+ "options": {
113
+ "responsive": true,
114
+ "animation": false
115
+ }
116
+ }
117
+ }
118
+ },
119
+ {
120
+ "text": "This is the image of a high school girl in Harajuku.",
121
+ "image": {
122
+ "type": "image",
123
+ "source": {
124
+ "kind": "url",
125
+ "url": "https://satoshi.blogs.com/mag2/May2025/ghibli0.png"
126
+ }
127
+ }
128
+ }
129
+ ]
130
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.0",
4
+ "credit": "closing"
5
+ },
6
+ "title": "[TITLE: Brief, engaging title for the topic]",
7
+ "lang": "en",
8
+ "references": [
9
+ {
10
+ "url": "[SOURCE_URL: URL of the source material]",
11
+ "title": "[SOURCE_TITLE: Title of the referenced article, or paper]",
12
+ "type": "[SOURCE_TYPE: article, paper]"
13
+ }
14
+ ],
15
+ "beats": [
16
+ {
17
+ "text": "[OPENING_BEAT: Introduce the topic with a hook. Reference the source material and set up why this topic matters. Usually 2-3 sentences that grab attention and provide context.]",
18
+ "imagePrompt": "[IMAGE_PROMPT: A prompt for the image to be generated for this beat.]"
19
+ },
20
+ {
21
+ "text": "[MAIN_CONCEPT: Define or explain the core concept/idea. This should be the central focus of your narrative. Keep it clear and accessible.]",
22
+ "imagePrompt": "[IMAGE_PROMPT: A prompt for the image to be generated for this beat.]"
23
+ },
24
+ {
25
+ "text": "[SUPPORTING_DETAIL_1: Additional context, examples, or elaboration that helps illustrate the main concept. This could include how it works, why it's important, or real-world applications.]",
26
+ "imagePrompt": "[IMAGE_PROMPT: A prompt for the image to be generated for this beat.]"
27
+ },
28
+ {
29
+ "text": "[SUPPORTING_DETAIL_2: Continue with more examples, deeper explanation, or different aspects of the topic if needed.]",
30
+ "imagePrompt": "[IMAGE_PROMPT: A prompt for the image to be generated for this beat.]"
31
+ },
32
+ {
33
+ "text": "[ADDITIONAL_BEATS: Add more beats as necessary to fully explore the topic. Complex topics may require 6-10+ beats to cover adequately. Each beat should advance the narrative or provide valuable information.]",
34
+ "imagePrompt": "[IMAGE_PROMPT: A prompt for the image to be generated for this beat.]"
35
+ },
36
+ {
37
+ "text": "[CONCLUSION/IMPACT: Wrap up with the significance, implications, or key takeaway. Help the audience understand why this matters to them.]",
38
+ "imagePrompt": "[IMAGE_PROMPT: A prompt for the image to be generated for this beat.]"
39
+ }
40
+ ]
41
+ }
@@ -0,0 +1,116 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.0",
4
+ "credit": "closing"
5
+ },
6
+ "title": "韓国の戒厳令とその日本への影響",
7
+ "description": "韓国で最近発令された戒厳令とその可能性のある影響について、また日本の憲法に関する考慮事項との類似点を含めた洞察に満ちた議論。",
8
+ "lang": "ja",
9
+ "beats": [
10
+ {
11
+ "speaker": "Announcer",
12
+ "text": "今日は、韓国で起きた戒厳令について、太郎くんが先生に聞きます。",
13
+ "imagePrompt": "A classroom setting with a curious Japanese student (Taro) and a kind teacher. Calm atmosphere, early morning light coming through the window."
14
+ },
15
+ {
16
+ "speaker": "Student",
17
+ "text": "先生、今日は韓国で起きた戒厳令のことを教えてもらえますか?",
18
+ "imagePrompt": "The student (Taro) sitting at his desk with a serious expression, raising his hand to ask a question. Teacher is slightly surprised but attentive."
19
+ },
20
+ {
21
+ "speaker": "Teacher",
22
+ "text": "もちろんだよ、太郎くん。韓国で最近、大統領が「戒厳令」っていうのを突然宣言したんだ。",
23
+ "imagePrompt": "TV screen showing a breaking news headline in Korean: 'President Declares Martial Law'. Students watching with concern."
24
+ },
25
+ {
26
+ "speaker": "Student",
27
+ "text": "戒厳令ってなんですか?",
28
+ "imagePrompt": "A close-up of the student's puzzled face, with a speech bubble saying '戒厳令って?'"
29
+ },
30
+ {
31
+ "speaker": "Teacher",
32
+ "text": "簡単に言うと、国がすごく危ない状態にあるとき、軍隊を使って人々の自由を制限するためのものなんだ。",
33
+ "imagePrompt": "Illustration of soldiers standing in the street, people being stopped and questioned, with a red 'X' on a protest sign. Moody and serious tone."
34
+ },
35
+ {
36
+ "speaker": "Student",
37
+ "text": "それって怖いですね。なんでそんなことをしたんですか?",
38
+ "imagePrompt": "Student looking anxious, thinking deeply. Background shows a shadowy image of a politician giving orders to the military."
39
+ },
40
+ {
41
+ "speaker": "Teacher",
42
+ "text": "大統領は「国会がうまく機能していないから」と言っていたけど…",
43
+ "imagePrompt": "A tense scene of military personnel entering a national assembly building in Korea, lawmakers looking shocked and resisting."
44
+ },
45
+ {
46
+ "speaker": "Student",
47
+ "text": "ええっ!?国会議員を捕まえようとするなんて、すごく危ないことじゃないですか。",
48
+ "imagePrompt": "The student reacts with shock, comic-style expression with wide eyes and open mouth. Background fades into a dramatic courtroom or parliament chaos."
49
+ },
50
+ {
51
+ "speaker": "Teacher",
52
+ "text": "その通りだよ。もし軍隊が国会を占拠していたら…",
53
+ "imagePrompt": "Dark visual of a locked parliament building with soldiers blocking the entrance, ominous sky in the background."
54
+ },
55
+ {
56
+ "speaker": "Student",
57
+ "text": "韓国ではどうなったんですか?",
58
+ "imagePrompt": "Student leans forward, curious and worried. Background shows a hopeful scene of people holding protest signs with candles at night."
59
+ },
60
+ {
61
+ "speaker": "Teacher",
62
+ "text": "幸い、野党の議員や市民たちが急いで集まって抗議して…",
63
+ "imagePrompt": "Peaceful protest scene in Seoul, citizens holding candles and banners, united. Hopeful tone."
64
+ },
65
+ {
66
+ "speaker": "Student",
67
+ "text": "それは大変なことですね…。日本ではそんなこと起きないんですか?",
68
+ "imagePrompt": "Student looking toward the Japanese flag outside the school window, pensive mood."
69
+ },
70
+ {
71
+ "speaker": "Teacher",
72
+ "text": "実はね、今、日本でも似たような話があるんだよ。",
73
+ "imagePrompt": "Teacher pointing to a newspaper headline: '緊急事態条項の議論進む'. Classroom chalkboard shows a map of Korea and Japan."
74
+ },
75
+ {
76
+ "speaker": "Student",
77
+ "text": "緊急事態宣言って、韓国の戒厳令と同じようなものなんですか?",
78
+ "imagePrompt": "Split screen image: left side shows a soldier in Korea, right side shows a suited Japanese politician giving a press conference."
79
+ },
80
+ {
81
+ "speaker": "Teacher",
82
+ "text": "似ている部分があるね。たとえば、総理大臣が…",
83
+ "imagePrompt": "Diagram-style visual showing the flow of emergency powers from PM to local governments. Simple, clean infographic style."
84
+ },
85
+ {
86
+ "speaker": "Student",
87
+ "text": "それって便利そうですけど、なんだか心配です。",
88
+ "imagePrompt": "Student's concerned expression, behind him a blurry image of a street with emergency sirens glowing in red."
89
+ },
90
+ {
91
+ "speaker": "Teacher",
92
+ "text": "そうだね。もちろん、緊急時には素早い対応が必要だけど…",
93
+ "imagePrompt": "Illustration of a balance scale: one side is 'freedom', the other 'security'. The scale is slightly tilting."
94
+ },
95
+ {
96
+ "speaker": "Student",
97
+ "text": "韓国みたいに、軍隊が政治に口を出してくることもあり得るんですか?",
98
+ "imagePrompt": "Student imagining a military tank next to the Japanese parliament, shown as a thought bubble."
99
+ },
100
+ {
101
+ "speaker": "Teacher",
102
+ "text": "完全にあり得ないとは言えないからこそ、注意が必要なんだ。",
103
+ "imagePrompt": "Japanese citizens reading newspapers and watching news with concerned faces, civic awareness growing."
104
+ },
105
+ {
106
+ "speaker": "Student",
107
+ "text": "ありがとうございます。とても良い勉強になりました。",
108
+ "imagePrompt": "The student bows slightly to the teacher with a grateful expression. The classroom is peaceful again."
109
+ },
110
+ {
111
+ "speaker": "Announcer",
112
+ "text": "ご視聴、ありがとうございました。次回の放送もお楽しみに。",
113
+ "imagePrompt": "Ending screen with soft background music, showing the show's logo and a thank-you message in Japanese."
114
+ }
115
+ ]
116
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.0",
4
+ "credit": "closing"
5
+ },
6
+ "title": "[TITLE: Brief, engaging title for the topic]",
7
+ "lang": "en",
8
+ "references": [
9
+ {
10
+ "url": "[SOURCE_URL: URL of the source material]",
11
+ "title": "[SOURCE_TITLE: Title of the referenced article, or paper]",
12
+ "type": "[SOURCE_TYPE: article, paper]"
13
+ }
14
+ ],
15
+ "beats": [
16
+ {
17
+ "text": "[OPENING_BEAT: Introduce the topic with a hook. Reference the source material and set up why this topic matters. Usually 2-3 sentences that grab attention and provide context.]"
18
+ },
19
+ {
20
+ "text": "[MAIN_CONCEPT: Define or explain the core concept/idea. This should be the central focus of your narrative. Keep it clear and accessible.]"
21
+ },
22
+ {
23
+ "text": "[SUPPORTING_DETAIL_1: Additional context, examples, or elaboration that helps illustrate the main concept. This could include how it works, why it's important, or real-world applications.]"
24
+ },
25
+ {
26
+ "text": "[SUPPORTING_DETAIL_2: Continue with more examples, deeper explanation, or different aspects of the topic if needed.]"
27
+ },
28
+ {
29
+ "text": "[ADDITIONAL_BEATS: Add more beats as necessary to fully explore the topic. Complex topics may require 6-10+ beats to cover adequately. Each beat should advance the narrative or provide valuable information.]"
30
+ },
31
+ {
32
+ "text": "[CONCLUSION/IMPACT: Wrap up with the significance, implications, or key takeaway. Help the audience understand why this matters to them.]"
33
+ }
34
+ ]
35
+ }
@@ -1,6 +0,0 @@
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
- "scriptName": "ghibli_strips.json"
6
- }