mulmocast 1.1.11 → 1.2.1
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/assets/templates/akira_comic.json +1 -1
- package/assets/templates/ani.json +1 -1
- package/assets/templates/business.json +1 -1
- package/assets/templates/characters.json +1 -1
- package/assets/templates/children_book.json +1 -1
- package/assets/templates/coding.json +1 -1
- package/assets/templates/comic_strips.json +1 -1
- package/assets/templates/drslump_comic.json +1 -1
- package/assets/templates/ghibli_comic.json +1 -1
- package/assets/templates/ghibli_image_only.json +1 -1
- package/assets/templates/ghibli_shorts.json +1 -1
- package/assets/templates/ghost_comic.json +1 -1
- package/assets/templates/html.json +12 -1
- package/assets/templates/onepiece_comic.json +1 -1
- package/assets/templates/portrait_movie.json +1 -1
- package/assets/templates/realistic_movie.json +1 -1
- package/assets/templates/sensei_and_taro.json +1 -1
- package/assets/templates/shorts.json +1 -1
- package/assets/templates/trailer.json +1 -1
- package/lib/actions/image_agents.d.ts +1 -1
- package/lib/actions/image_references.js +2 -2
- package/lib/actions/images.js +6 -30
- package/lib/actions/movie.js +2 -2
- package/lib/agents/add_bgm_agent.js +2 -1
- package/lib/agents/image_genai_agent.d.ts +5 -0
- package/lib/agents/image_genai_agent.js +52 -0
- package/lib/agents/image_openai_agent.js +1 -0
- package/lib/agents/index.d.ts +3 -3
- package/lib/agents/index.js +3 -3
- package/lib/agents/movie_genai_agent.d.ts +9 -0
- package/lib/agents/movie_genai_agent.js +86 -0
- package/lib/cli/commands/tool/prompt/handler.js +1 -1
- package/lib/cli/helpers.js +3 -1
- package/lib/methods/mulmo_beat.js +1 -1
- package/lib/methods/mulmo_presentation_style.js +1 -1
- package/lib/methods/mulmo_studio_context.d.ts +1 -0
- package/lib/methods/mulmo_studio_context.js +7 -0
- package/lib/tools/dump_prompt.d.ts +2 -1
- package/lib/tools/dump_prompt.js +3 -2
- package/lib/types/agent.d.ts +8 -1
- package/lib/types/schema.d.ts +33 -33
- package/lib/types/schema.js +2 -2
- package/lib/utils/context.d.ts +5 -5
- package/lib/utils/filters.js +7 -1
- package/lib/utils/inquirer.js +15 -22
- package/lib/utils/prompt.d.ts +1 -1
- package/lib/utils/prompt.js +1 -1
- package/lib/utils/provider2agent.d.ts +1 -1
- package/lib/utils/provider2agent.js +5 -5
- package/lib/utils/utils.d.ts +0 -1
- package/lib/utils/utils.js +4 -7
- package/package.json +9 -8
- package/scripts/test/test_genai.json +47 -0
- package/assets/templates/ani_ja.json +0 -44
- package/assets/templates/podcast_standard.json +0 -5
- package/assets/templates/text_and_image.json +0 -6
- package/assets/templates/text_only.json +0 -6
- package/scripts/test/test_hello_bgm_0.json +0 -21
|
@@ -36,9 +36,9 @@ export const provider2ImageAgent = {
|
|
|
36
36
|
models: ["dall-e-3", "gpt-image-1"],
|
|
37
37
|
},
|
|
38
38
|
google: {
|
|
39
|
-
agentName: "
|
|
40
|
-
defaultModel: "imagen-
|
|
41
|
-
models: ["imagen-3.0-
|
|
39
|
+
agentName: "imageGenAIAgent",
|
|
40
|
+
defaultModel: "imagen-4.0-generate-preview-06-06",
|
|
41
|
+
models: ["imagen-3.0-generate-002", "imagen-4.0-generate-preview-06-06", "imagen-4.0-ultra-generate-preview-06-06"],
|
|
42
42
|
},
|
|
43
43
|
mock: {
|
|
44
44
|
agentName: "mediaMockAgent",
|
|
@@ -143,7 +143,7 @@ export const provider2MovieAgent = {
|
|
|
143
143
|
},
|
|
144
144
|
},
|
|
145
145
|
google: {
|
|
146
|
-
agentName: "
|
|
146
|
+
agentName: "movieGenAIAgent",
|
|
147
147
|
defaultModel: "veo-2.0-generate-001",
|
|
148
148
|
models: ["veo-2.0-generate-001"],
|
|
149
149
|
},
|
|
@@ -206,7 +206,7 @@ export const provider2LipSyncAgent = {
|
|
|
206
206
|
export const provider2LLMAgent = {
|
|
207
207
|
openai: {
|
|
208
208
|
agentName: "openAIAgent",
|
|
209
|
-
defaultModel: "gpt-
|
|
209
|
+
defaultModel: "gpt-5",
|
|
210
210
|
max_tokens: 8192,
|
|
211
211
|
},
|
|
212
212
|
anthropic: {
|
package/lib/utils/utils.d.ts
CHANGED
|
@@ -10,7 +10,6 @@ export declare const chunkArray: <T>(array: T[], size?: number) => T[][];
|
|
|
10
10
|
export declare const isHttp: (fileOrUrl: string) => boolean;
|
|
11
11
|
export declare const text2hash: (input: string) => string;
|
|
12
12
|
export declare const localizedText: (beat: MulmoBeat, multiLingualData?: MulmoStudioMultiLingualData, targetLang?: string, defaultLang?: string) => string;
|
|
13
|
-
export declare const sleep: (milliseconds: number) => Promise<unknown>;
|
|
14
13
|
export declare function userAssert(condition: boolean, message: string): asserts condition;
|
|
15
14
|
export declare const settings2GraphAIConfig: (settings?: Record<string, string>, env?: Record<string, string | undefined>) => ConfigDataDictionary<DefaultConfigData>;
|
|
16
15
|
export declare const getExtention: (contentType: string | null, url: string) => string;
|
package/lib/utils/utils.js
CHANGED
|
@@ -29,9 +29,6 @@ export const localizedText = (beat, multiLingualData, targetLang, defaultLang) =
|
|
|
29
29
|
}
|
|
30
30
|
return beat.text;
|
|
31
31
|
};
|
|
32
|
-
export const sleep = async (milliseconds) => {
|
|
33
|
-
return await new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
34
|
-
};
|
|
35
32
|
export function userAssert(condition, message) {
|
|
36
33
|
if (!condition) {
|
|
37
34
|
throw new Error(message);
|
|
@@ -54,8 +51,8 @@ export const settings2GraphAIConfig = (settings, env) => {
|
|
|
54
51
|
apiKey: getKey("IMAGE", "OPENAI_API_KEY"),
|
|
55
52
|
baseURL: getKey("IMAGE", "OPENAI_BASE_URL"),
|
|
56
53
|
},
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
imageGenAIAgent: {
|
|
55
|
+
apiKey: getKey("IMAGE", "GEMINI_API_KEY"),
|
|
59
56
|
},
|
|
60
57
|
anthropicAgent: {
|
|
61
58
|
apiKey: getKey("LLM", "ANTHROPIC_API_TOKEN"),
|
|
@@ -63,8 +60,8 @@ export const settings2GraphAIConfig = (settings, env) => {
|
|
|
63
60
|
movieReplicateAgent: {
|
|
64
61
|
apiKey: getKey("MOVIE", "REPLICATE_API_TOKEN"),
|
|
65
62
|
},
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
movieGenAIAgent: {
|
|
64
|
+
apiKey: getKey("MOVIE", "GEMINI_API_KEY"),
|
|
68
65
|
},
|
|
69
66
|
ttsNijivoiceAgent: {
|
|
70
67
|
apiKey: getKey("TTS", "NIJIVOICE_API_KEY"),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mulmocast",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.node.js",
|
|
@@ -66,29 +66,30 @@
|
|
|
66
66
|
"homepage": "https://github.com/receptron/mulmocast-cli#readme",
|
|
67
67
|
"dependencies": {
|
|
68
68
|
"@google-cloud/text-to-speech": "^6.2.0",
|
|
69
|
+
"@google/genai": "^1.13.0",
|
|
69
70
|
"@graphai/anthropic_agent": "^2.0.5",
|
|
70
71
|
"@graphai/browserless_agent": "^2.0.1",
|
|
71
72
|
"@graphai/gemini_agent": "^2.0.0",
|
|
72
73
|
"@graphai/groq_agent": "^2.0.0",
|
|
73
|
-
"@graphai/input_agents": "^1.0.
|
|
74
|
+
"@graphai/input_agents": "^1.0.2",
|
|
74
75
|
"@graphai/openai_agent": "^2.0.3",
|
|
75
76
|
"@graphai/stream_agent_filter": "^2.0.2",
|
|
76
77
|
"@graphai/vanilla": "^2.0.6",
|
|
77
78
|
"@graphai/vanilla_node_agents": "^2.0.1",
|
|
79
|
+
"@inquirer/input": "^4.2.1",
|
|
80
|
+
"@inquirer/select": "^4.3.1",
|
|
78
81
|
"@modelcontextprotocol/sdk": "^1.15.1",
|
|
79
82
|
"@tavily/core": "^0.5.9",
|
|
80
83
|
"canvas": "^3.1.2",
|
|
81
84
|
"clipboardy": "^4.0.0",
|
|
82
85
|
"dotenv": "^17.2.1",
|
|
83
86
|
"fluent-ffmpeg": "^2.1.3",
|
|
84
|
-
"google-auth-library": "^10.1.0",
|
|
85
87
|
"graphai": "^2.0.13",
|
|
86
|
-
"inquirer": "^12.9.0",
|
|
87
88
|
"marked": "^16.1.2",
|
|
88
89
|
"ora": "^8.2.0",
|
|
89
|
-
"puppeteer": "^24.
|
|
90
|
+
"puppeteer": "^24.16.0",
|
|
90
91
|
"replicate": "^1.0.1",
|
|
91
|
-
"yaml": "^2.8.
|
|
92
|
+
"yaml": "^2.8.1",
|
|
92
93
|
"yargs": "^18.0.0",
|
|
93
94
|
"zod": "^3.25.76",
|
|
94
95
|
"zod-to-json-schema": "^3.24.6"
|
|
@@ -99,9 +100,9 @@
|
|
|
99
100
|
"@receptron/test_utils": "^2.0.0",
|
|
100
101
|
"@types/fluent-ffmpeg": "^2.1.26",
|
|
101
102
|
"@types/yargs": "^17.0.33",
|
|
102
|
-
"eslint": "^9.
|
|
103
|
+
"eslint": "^9.33.0",
|
|
103
104
|
"eslint-config-prettier": "^10.1.8",
|
|
104
|
-
"eslint-plugin-prettier": "^5.5.
|
|
105
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
105
106
|
"eslint-plugin-sonarjs": "^3.0.4",
|
|
106
107
|
"prettier": "^3.6.2",
|
|
107
108
|
"ts-node": "^10.9.2",
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$mulmocast": { "version": "1.1" },
|
|
3
|
+
"imageParams": {
|
|
4
|
+
"provider": "google",
|
|
5
|
+
"style": "<style>Photo realistic.</style>"
|
|
6
|
+
},
|
|
7
|
+
"movieParams": {
|
|
8
|
+
"provider": "google"
|
|
9
|
+
},
|
|
10
|
+
"lang": "en",
|
|
11
|
+
"beats": [
|
|
12
|
+
{
|
|
13
|
+
"id": "imagen_3",
|
|
14
|
+
"text": "image generated by imagen-3",
|
|
15
|
+
"imagePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
|
|
16
|
+
"imageParams": {
|
|
17
|
+
"model": "imagen-3.0-generate-002"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "imagen_4",
|
|
22
|
+
"text": "image generated by imagen-4",
|
|
23
|
+
"imagePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "imagen_4_ultra",
|
|
27
|
+
"text": "image generated by imagen-4",
|
|
28
|
+
"imagePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
|
|
29
|
+
"imageParams": {
|
|
30
|
+
"model": "imagen-4.0-ultra-generate-preview-06-06"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "genai_veo2",
|
|
35
|
+
"text": "movie generated by veo2",
|
|
36
|
+
"duration": 5,
|
|
37
|
+
"moviePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "genai_veo2_image",
|
|
41
|
+
"text": "movie generated by veo2 with image",
|
|
42
|
+
"duration": 5,
|
|
43
|
+
"imagePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
|
|
44
|
+
"moviePrompt": "a woman takes a selfie with her phone"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"title": "Presentation with Ani in Japanese",
|
|
3
|
-
"description": "Template for presentation with Ani in Japanese.",
|
|
4
|
-
"systemPrompt": "Generate a Japanese script for a presentation of the given topic. 言葉づかいは少しツンデレにして。Another AI will generate comic for each beat based on the image prompt of that beat. You don't need to specify the style of the image, just describe the scene. Mention the reference in one of beats, if it exists. Use the JSON below as a template. Create appropriate amount of beats, and make sure the beats are coherent and flow well.",
|
|
5
|
-
"presentationStyle": {
|
|
6
|
-
"$mulmocast": {
|
|
7
|
-
"version": "1.1",
|
|
8
|
-
"credit": "closing"
|
|
9
|
-
},
|
|
10
|
-
"movieParams": {
|
|
11
|
-
"provider": "replicate",
|
|
12
|
-
"model": "bytedance/seedance-1-lite"
|
|
13
|
-
},
|
|
14
|
-
"audioParams": {
|
|
15
|
-
"bgm": {
|
|
16
|
-
"kind": "url",
|
|
17
|
-
"url": "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/morning001.mp3"
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
"lang": "ja",
|
|
21
|
-
"canvasSize": {
|
|
22
|
-
"width": 1024,
|
|
23
|
-
"height": 1536
|
|
24
|
-
},
|
|
25
|
-
"speechParams": {
|
|
26
|
-
"speakers": {
|
|
27
|
-
"Presenter": { "provider": "nijivoice", "voiceId": "9d9ed276-49ee-443a-bc19-26e6136d05f0" }
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
"imageParams": {
|
|
31
|
-
"style": "<style>A highly polished 2D digital illustration in anime and manga style, featuring clean linework, soft shading, vivid colors, and expressive facial detailing. The composition emphasizes clarity and visual impact with a minimalistic background and a strong character focus. The lighting is even and bright, giving the image a crisp and energetic feel, reminiscent of high-quality character art used in Japanese visual novels or mobile games.</style>",
|
|
32
|
-
"images": {
|
|
33
|
-
"ani": {
|
|
34
|
-
"type": "image",
|
|
35
|
-
"source": {
|
|
36
|
-
"kind": "url",
|
|
37
|
-
"url": "https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/ani.png"
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
"scriptName": "image_prompts_template.json"
|
|
44
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"title": "Text and Image",
|
|
3
|
-
"description": "Template for Text and Image Script.",
|
|
4
|
-
"systemPrompt": "Generate a script for a presentation of the given topic. Another AI will generate comic strips for each beat based on the imagePrompt of that beat. Mention the reference in one of beats, if it exists. Use the JSON below as a template.",
|
|
5
|
-
"scriptName": "image_prompts_template.json"
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"title": "Text Only",
|
|
3
|
-
"description": "Template for Text Only Script.",
|
|
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": "text_only_template.json"
|
|
6
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$mulmocast": {
|
|
3
|
-
"version": "1.1"
|
|
4
|
-
},
|
|
5
|
-
"audioParams": {
|
|
6
|
-
"bgmVolume": 0
|
|
7
|
-
},
|
|
8
|
-
"lang": "en",
|
|
9
|
-
"beats": [
|
|
10
|
-
{
|
|
11
|
-
"text": "Hello World",
|
|
12
|
-
"image": {
|
|
13
|
-
"type": "textSlide",
|
|
14
|
-
"slide": {
|
|
15
|
-
"title": "Hello World",
|
|
16
|
-
"bullets": ["Hello", "World"]
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
]
|
|
21
|
-
}
|