@mulmocast/slide 0.3.2 → 0.4.0
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/.claude/skills/extend/SKILL.md +28 -5
- package/.claude/skills/narrate/SKILL.md +32 -27
- package/README.md +44 -0
- package/lib/actions/common.d.ts +9 -0
- package/lib/actions/common.d.ts.map +1 -1
- package/lib/actions/common.js +28 -0
- package/lib/actions/common.js.map +1 -1
- package/lib/actions/extend-scaffold.d.ts +5 -0
- package/lib/actions/extend-scaffold.d.ts.map +1 -0
- package/lib/actions/extend-scaffold.js +63 -0
- package/lib/actions/extend-scaffold.js.map +1 -0
- package/lib/actions/extend-validate.d.ts.map +1 -1
- package/lib/actions/extend-validate.js +1 -7
- package/lib/actions/extend-validate.js.map +1 -1
- package/lib/actions/narrate.d.ts +10 -0
- package/lib/actions/narrate.d.ts.map +1 -0
- package/lib/actions/narrate.js +162 -0
- package/lib/actions/narrate.js.map +1 -0
- package/lib/cli.js +62 -1
- package/lib/cli.js.map +1 -1
- package/lib/utils/llm-metadata.d.ts +28 -0
- package/lib/utils/llm-metadata.d.ts.map +1 -0
- package/lib/utils/llm-metadata.js +187 -0
- package/lib/utils/llm-metadata.js.map +1 -0
- package/lib/utils/llm.d.ts +6 -0
- package/lib/utils/llm.d.ts.map +1 -1
- package/lib/utils/llm.js +13 -14
- package/lib/utils/llm.js.map +1 -1
- package/package.json +2 -1
|
@@ -8,16 +8,39 @@ Convert a MulmoScript JSON into an ExtendedScript by adding `scriptMeta` and `be
|
|
|
8
8
|
/extend <mulmo_script.json path> [--source <source file path>]
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
## CLI
|
|
11
|
+
## CLI Commands Overview
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
- If `name` is `"@mulmocast/slide"` (i.e., developing MulmoCast-Slides itself) → use `yarn cli`
|
|
15
|
-
- Otherwise → use `npx mulmo-slide`
|
|
13
|
+
This project uses multiple CLI tools. Do NOT confuse them:
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
| Command | Package | Purpose | Input |
|
|
16
|
+
|---------|---------|---------|-------|
|
|
17
|
+
| `mulmo-slide` (or `yarn cli`) | `@mulmocast/slide` | Convert source files to MulmoScript, scaffold ExtendedScript | Presentation files (.pdf, .pptx, .md, .key) |
|
|
18
|
+
| `mulmo` | `mulmocast` | Generate movie/PDF/audio from MulmoScript | `mulmo_script.json` |
|
|
19
|
+
| `mulmocast-preprocessor` | `mulmocast-preprocessor` | Convert ExtendedScript → MulmoScript, query, summarize | `extended_script.json` |
|
|
20
|
+
|
|
21
|
+
**IMPORTANT**: `mulmo-slide movie` and `mulmo movie` are DIFFERENT commands. Use `npx mulmo movie` (not `mulmo-slide`) when generating video from a `mulmo_script.json`.
|
|
22
|
+
|
|
23
|
+
### CLI prefix for mulmo-slide
|
|
24
|
+
|
|
25
|
+
Determine the correct CLI command prefix:
|
|
26
|
+
- If `package.json` exists in the project root and its `name` is `"@mulmocast/slide"` (i.e., developing MulmoCast-Slides itself) → use `yarn cli`
|
|
27
|
+
- Otherwise (including when no `package.json` exists) → use `npx mulmo-slide`
|
|
28
|
+
- NEVER create a `package.json` file for this purpose
|
|
29
|
+
|
|
30
|
+
Use this prefix (referred to as `{cli}` below) for `mulmo-slide` CLI calls in the steps.
|
|
18
31
|
|
|
19
32
|
## Instructions
|
|
20
33
|
|
|
34
|
+
### Step 0 (Optional): Scaffold
|
|
35
|
+
|
|
36
|
+
If the MulmoScript doesn't already have an `extended_script.json`, you can create a skeleton first:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
{cli} extend scaffold <mulmo_script.json>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
This adds beat IDs, empty metadata, and imports extracted texts as notes. You can then skip to Step 2 and analyze the scaffolded output.
|
|
43
|
+
|
|
21
44
|
### Step 1: Read Inputs
|
|
22
45
|
|
|
23
46
|
Use the Read tool (not bash/node commands) to read the following files:
|
|
@@ -10,54 +10,59 @@ Convert any supported source file (PDF, PPTX, Markdown, Keynote) into a validate
|
|
|
10
10
|
|
|
11
11
|
Supported formats: `.pdf`, `.pptx`, `.md`, `.key`
|
|
12
12
|
|
|
13
|
-
## CLI
|
|
13
|
+
## CLI Commands Overview
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
- If `name` is `"@mulmocast/slide"` (i.e., developing MulmoCast-Slides itself) → use `yarn cli`
|
|
17
|
-
- Otherwise → use `npx mulmo-slide`
|
|
15
|
+
This project uses multiple CLI tools. Do NOT confuse them:
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
| Command | Package | Purpose | Input |
|
|
18
|
+
|---------|---------|---------|-------|
|
|
19
|
+
| `mulmo-slide` (or `yarn cli`) | `@mulmocast/slide` | Convert source files to MulmoScript, scaffold ExtendedScript | Presentation files (.pdf, .pptx, .md, .key) |
|
|
20
|
+
| `mulmo` | `mulmocast` | Generate movie/PDF/audio from MulmoScript | `mulmo_script.json` |
|
|
21
|
+
| `mulmocast-preprocessor` | `mulmocast-preprocessor` | Convert ExtendedScript → MulmoScript, query, summarize | `extended_script.json` |
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
**IMPORTANT**: `mulmo-slide movie` and `mulmo movie` are DIFFERENT commands. Use `npx mulmo movie` (not `mulmo-slide`) when generating video from a `mulmo_script.json`.
|
|
22
24
|
|
|
23
|
-
###
|
|
25
|
+
### CLI prefix for mulmo-slide
|
|
24
26
|
|
|
25
|
-
|
|
27
|
+
Determine the correct CLI command prefix:
|
|
28
|
+
- If `package.json` exists in the project root and its `name` is `"@mulmocast/slide"` (i.e., developing MulmoCast-Slides itself) → use `yarn cli`
|
|
29
|
+
- Otherwise (including when no `package.json` exists) → use `npx mulmo-slide`
|
|
30
|
+
- NEVER create a `package.json` file for this purpose
|
|
26
31
|
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
{cli} pdf <file>
|
|
30
|
-
```
|
|
32
|
+
Use this prefix (referred to as `{cli}` below) for `mulmo-slide` CLI calls in the steps.
|
|
31
33
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
## Instructions
|
|
35
|
+
|
|
36
|
+
### Step 1: Scaffold ExtendedScript
|
|
37
|
+
|
|
38
|
+
Run the narrate CLI with `--scaffold-only` to convert the source and create the ExtendedScript skeleton in one step:
|
|
36
39
|
|
|
37
|
-
**Markdown:**
|
|
38
40
|
```bash
|
|
39
|
-
{cli}
|
|
41
|
+
{cli} narrate <file> --scaffold-only
|
|
40
42
|
```
|
|
41
43
|
|
|
42
|
-
|
|
44
|
+
This automatically detects the file format, converts to MulmoScript, and creates `scripts/{basename}/extended_script.json` with:
|
|
45
|
+
- Beat IDs assigned
|
|
46
|
+
- Empty metadata fields ready for AI analysis
|
|
47
|
+
- Extracted texts imported as notes (for PDF)
|
|
48
|
+
|
|
49
|
+
If the MulmoScript already exists and you want to regenerate it, add `-f`:
|
|
43
50
|
```bash
|
|
44
|
-
{cli}
|
|
51
|
+
{cli} narrate <file> --scaffold-only -f
|
|
45
52
|
```
|
|
46
53
|
|
|
47
|
-
This produces `scripts/{basename}/mulmo_script.json` and (for PDF) `scripts/{basename}/extracted_texts.json`.
|
|
48
|
-
|
|
49
54
|
Confirm the output:
|
|
50
|
-
- How many
|
|
51
|
-
- Whether
|
|
55
|
+
- How many beats were scaffolded
|
|
56
|
+
- Whether notes were imported from extracted texts
|
|
52
57
|
|
|
53
58
|
### Step 2: Read Inputs
|
|
54
59
|
|
|
55
60
|
Use the Read tool (not bash/node commands) to read the following files:
|
|
56
61
|
|
|
57
|
-
1. `scripts/{basename}/
|
|
62
|
+
1. `scripts/{basename}/extended_script.json` (the scaffolded output from Step 1)
|
|
58
63
|
2. `.claude/skills/narrate/references/extended-script-schema.md`
|
|
59
|
-
3. `
|
|
60
|
-
4.
|
|
64
|
+
3. The original source `.md` file (if Markdown, for speaker notes and structure)
|
|
65
|
+
4. For image-based slides (PDF/PPTX), read the slide images to understand visual content
|
|
61
66
|
|
|
62
67
|
### Step 3: Analyze Content
|
|
63
68
|
|
package/README.md
CHANGED
|
@@ -136,8 +136,10 @@ Commands:
|
|
|
136
136
|
mulmo-slide keynote <file> Convert Keynote to MulmoScript (macOS only)
|
|
137
137
|
mulmo-slide movie <file> Generate movie from presentation
|
|
138
138
|
mulmo-slide bundle <file> Generate MulmoViewer bundle from presentation
|
|
139
|
+
mulmo-slide narrate <file> Generate narrated ExtendedScript (full pipeline)
|
|
139
140
|
mulmo-slide extend init Install Claude Code skills (/narrate, /extend)
|
|
140
141
|
mulmo-slide extend validate Validate ExtendedScript JSON against schema
|
|
142
|
+
mulmo-slide extend scaffold Create ExtendedScript skeleton from MulmoScript
|
|
141
143
|
```
|
|
142
144
|
|
|
143
145
|
The `convert` command auto-detects file format by extension (.pptx, .md, .key, .pdf).
|
|
@@ -557,8 +559,50 @@ mulmo-slide bundle presentation.pptx -f -g
|
|
|
557
559
|
- The LLM considers the overall presentation structure to generate contextual narration
|
|
558
560
|
- Output is in the specified language (`-l` option)
|
|
559
561
|
|
|
562
|
+
## Narrate CLI
|
|
563
|
+
|
|
564
|
+
Generate a narrated ExtendedScript from any supported source file in one command. This automates the full pipeline: conversion to MulmoScript, LLM-based narration and metadata generation, and validation.
|
|
565
|
+
|
|
566
|
+
**Usage:**
|
|
567
|
+
|
|
568
|
+
```bash
|
|
569
|
+
# Full pipeline (requires OPENAI_API_KEY)
|
|
570
|
+
mulmo-slide narrate paper.pdf
|
|
571
|
+
mulmo-slide narrate slides.pptx -l ja
|
|
572
|
+
mulmo-slide narrate document.md --mermaid -s heading
|
|
573
|
+
|
|
574
|
+
# Scaffold only (no LLM, for Claude Code handoff)
|
|
575
|
+
mulmo-slide narrate paper.pdf --scaffold-only
|
|
576
|
+
|
|
577
|
+
# yarn (development)
|
|
578
|
+
yarn narrate samples/sample.pdf -l ja
|
|
579
|
+
yarn narrate samples/sample.pdf --scaffold-only
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
**Options:**
|
|
583
|
+
- `-l, --lang` - Language for narration (en, ja, fr, de)
|
|
584
|
+
- `--scaffold-only` - Only create ExtendedScript skeleton (no LLM). Useful as preparation for Claude Code `/narrate` analysis
|
|
585
|
+
- `-f, --force` - Force regenerate MulmoScript even if it exists
|
|
586
|
+
- `-s, --separator` - Slide separator mode (for Markdown files)
|
|
587
|
+
- `--mermaid` - Convert mermaid code blocks (for Markdown files)
|
|
588
|
+
|
|
589
|
+
**Output:** `scripts/{basename}/extended_script.json`
|
|
590
|
+
|
|
591
|
+
### Extend Scaffold
|
|
592
|
+
|
|
593
|
+
Create an ExtendedScript skeleton from an existing MulmoScript without any LLM calls. This adds beat IDs, empty metadata fields, and imports extracted texts as notes.
|
|
594
|
+
|
|
595
|
+
```bash
|
|
596
|
+
mulmo-slide extend scaffold scripts/basename/mulmo_script.json
|
|
597
|
+
|
|
598
|
+
# yarn (development)
|
|
599
|
+
yarn cli extend scaffold scripts/basename/mulmo_script.json
|
|
600
|
+
```
|
|
601
|
+
|
|
560
602
|
## Narrate: Source File to Narrated Video (Claude Code Skill)
|
|
561
603
|
|
|
604
|
+
> **Tip:** If you don't need interactive analysis and want a fully automated pipeline, use the [Narrate CLI](#narrate-cli) instead (`mulmo-slide narrate <file>`). It runs the full pipeline with OpenAI GPT-4o without requiring Claude Code.
|
|
605
|
+
|
|
562
606
|
The `/narrate` skill converts any supported source file into a narrated ExtendedScript in one step. It handles the full pipeline: conversion, narration generation, metadata, and validation.
|
|
563
607
|
|
|
564
608
|
### Setup
|
package/lib/actions/common.d.ts
CHANGED
|
@@ -15,6 +15,15 @@ export interface InitializeContextOptions {
|
|
|
15
15
|
captionLang?: string;
|
|
16
16
|
}
|
|
17
17
|
export declare function initializeContext(mulmoScriptPath: string, outputDir: string, options?: InitializeContextOptions): Promise<MulmoStudioContext>;
|
|
18
|
+
export declare const readJsonFile: <T>(filePath: string) => T;
|
|
19
|
+
export declare const writeJsonFile: (filePath: string, data: unknown) => void;
|
|
20
|
+
export declare const loadExtractedTexts: (dir: string) => string[] | null;
|
|
21
|
+
export declare const formatZodError: (error: {
|
|
22
|
+
issues: Array<{
|
|
23
|
+
path: PropertyKey[];
|
|
24
|
+
message: string;
|
|
25
|
+
}>;
|
|
26
|
+
}) => string;
|
|
18
27
|
export type ActionRunner = (mulmoScriptPath: string, outputDir: string) => Promise<void>;
|
|
19
28
|
export interface RunActionOptions {
|
|
20
29
|
force?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/actions/common.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAGD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC;AAIrE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAiBzD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,iBAAiB,CACrC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,kBAAkB,CAAC,CA4B7B;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,EAC1B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAuCf"}
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/actions/common.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAGD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC;AAIrE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAiBzD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,iBAAiB,CACrC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,kBAAkB,CAAC,CA4B7B;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,UAAU,MAAM,KAAG,CAGlD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,EAAE,MAAM,OAAO,KAAG,IAE/D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,KAAG,MAAM,EAAE,GAAG,IAW3D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO;IACpC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD,KAAG,MAOH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,EAC1B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAuCf"}
|
package/lib/actions/common.js
CHANGED
|
@@ -92,6 +92,34 @@ export async function initializeContext(mulmoScriptPath, outputDir, options = {}
|
|
|
92
92
|
}
|
|
93
93
|
return context;
|
|
94
94
|
}
|
|
95
|
+
export const readJsonFile = (filePath) => {
|
|
96
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
97
|
+
return JSON.parse(content);
|
|
98
|
+
};
|
|
99
|
+
export const writeJsonFile = (filePath, data) => {
|
|
100
|
+
fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n");
|
|
101
|
+
};
|
|
102
|
+
export const loadExtractedTexts = (dir) => {
|
|
103
|
+
const textsPath = path.join(dir, "extracted_texts.json");
|
|
104
|
+
if (!fs.existsSync(textsPath)) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
return readJsonFile(textsPath);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
console.warn(`Warning: Could not parse ${textsPath}, skipping notes`);
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
export const formatZodError = (error) => {
|
|
116
|
+
return error.issues
|
|
117
|
+
.map((issue) => {
|
|
118
|
+
const pathStr = issue.path.length > 0 ? issue.path.map(String).join(".") : "(root)";
|
|
119
|
+
return ` - ${pathStr}: ${issue.message}`;
|
|
120
|
+
})
|
|
121
|
+
.join("\n");
|
|
122
|
+
};
|
|
95
123
|
export function getMulmoScriptPath(basename) {
|
|
96
124
|
return path.join("scripts", basename, "mulmo_script.json");
|
|
97
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/actions/common.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/actions/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MulmoScript } from "@mulmocast/types";
|
|
2
|
+
import type { ExtendedScript } from "@mulmocast/extended-types";
|
|
3
|
+
export declare const scaffoldExtendedScript: (mulmoScript: MulmoScript, extractedTexts: string[] | null) => ExtendedScript;
|
|
4
|
+
export declare const runExtendScaffold: (filePath: string) => void;
|
|
5
|
+
//# sourceMappingURL=extend-scaffold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extend-scaffold.d.ts","sourceRoot":"","sources":["../../src/actions/extend-scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AAsBxF,eAAO,MAAM,sBAAsB,GACjC,aAAa,WAAW,EACxB,gBAAgB,MAAM,EAAE,GAAG,IAAI,KAC9B,cAWF,CAAC;AAgCF,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,IAiBpD,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import { readJsonFile, writeJsonFile, loadExtractedTexts } from "./common.js";
|
|
4
|
+
const addBeatIds = (beats) => {
|
|
5
|
+
return beats.map((beat, i) => {
|
|
6
|
+
if (beat.id) {
|
|
7
|
+
return beat;
|
|
8
|
+
}
|
|
9
|
+
return { ...beat, id: `beat-${i + 1}` };
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
const addBeatMeta = (beats, extractedTexts) => {
|
|
13
|
+
return beats.map((beat, i) => {
|
|
14
|
+
const meta = { ...(beat.meta ?? {}) };
|
|
15
|
+
if (extractedTexts && i < extractedTexts.length && extractedTexts[i]) {
|
|
16
|
+
meta.notes = extractedTexts[i];
|
|
17
|
+
}
|
|
18
|
+
return { ...beat, meta };
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
export const scaffoldExtendedScript = (mulmoScript, extractedTexts) => {
|
|
22
|
+
const beats = addBeatMeta(addBeatIds(mulmoScript.beats), extractedTexts);
|
|
23
|
+
// Set defaults first so the spread preserves existing values
|
|
24
|
+
// (JSON may include scriptMeta/outputProfiles not in MulmoScript type)
|
|
25
|
+
return {
|
|
26
|
+
scriptMeta: {},
|
|
27
|
+
outputProfiles: {},
|
|
28
|
+
...mulmoScript,
|
|
29
|
+
beats,
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
const buildSummary = (mulmoScript, result, outputPath) => ({
|
|
33
|
+
beatCount: result.beats.length,
|
|
34
|
+
idsAdded: mulmoScript.beats.filter((b) => !b.id).length,
|
|
35
|
+
notesAdded: result.beats.filter((b) => b.meta?.notes).length,
|
|
36
|
+
outputPath,
|
|
37
|
+
});
|
|
38
|
+
const printSummary = (summary) => {
|
|
39
|
+
console.log(`\n✓ Scaffolded ExtendedScript: ${summary.outputPath}`);
|
|
40
|
+
console.log(` Beats: ${summary.beatCount}`);
|
|
41
|
+
if (summary.idsAdded > 0) {
|
|
42
|
+
console.log(` IDs added: ${summary.idsAdded}`);
|
|
43
|
+
}
|
|
44
|
+
if (summary.notesAdded > 0) {
|
|
45
|
+
console.log(` Notes from extracted_texts: ${summary.notesAdded}`);
|
|
46
|
+
}
|
|
47
|
+
console.log(`\nNext: Add narration and metadata manually or with LLM`);
|
|
48
|
+
};
|
|
49
|
+
export const runExtendScaffold = (filePath) => {
|
|
50
|
+
const resolvedPath = path.resolve(filePath);
|
|
51
|
+
if (!fs.existsSync(resolvedPath)) {
|
|
52
|
+
console.error(`File not found: ${resolvedPath}`);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
const mulmoScript = readJsonFile(resolvedPath);
|
|
56
|
+
const dir = path.dirname(resolvedPath);
|
|
57
|
+
const extractedTexts = loadExtractedTexts(dir);
|
|
58
|
+
const result = scaffoldExtendedScript(mulmoScript, extractedTexts);
|
|
59
|
+
const outputPath = path.join(dir, "extended_script.json");
|
|
60
|
+
writeJsonFile(outputPath, result);
|
|
61
|
+
printSummary(buildSummary(mulmoScript, result, outputPath));
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=extend-scaffold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extend-scaffold.js","sourceRoot":"","sources":["../../src/actions/extend-scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extend-validate.d.ts","sourceRoot":"","sources":["../../src/actions/extend-validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extend-validate.d.ts","sourceRoot":"","sources":["../../src/actions/extend-validate.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,IAmCpD,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as fs from "fs";
|
|
2
2
|
import * as path from "path";
|
|
3
3
|
import { extendedScriptSchema } from "@mulmocast/extended-types";
|
|
4
|
+
import { formatZodError } from "./common.js";
|
|
4
5
|
const summarizeScript = (data) => {
|
|
5
6
|
const script = data;
|
|
6
7
|
const beats = script.beats;
|
|
@@ -15,13 +16,6 @@ const summarizeScript = (data) => {
|
|
|
15
16
|
sections,
|
|
16
17
|
};
|
|
17
18
|
};
|
|
18
|
-
const formatZodError = (error) => {
|
|
19
|
-
const lines = error.issues.map((issue) => {
|
|
20
|
-
const pathStr = issue.path.length > 0 ? issue.path.map((p) => String(p)).join(".") : "(root)";
|
|
21
|
-
return ` - ${pathStr}: ${issue.message}`;
|
|
22
|
-
});
|
|
23
|
-
return lines.join("\n");
|
|
24
|
-
};
|
|
25
19
|
export const runExtendValidate = (filePath) => {
|
|
26
20
|
const resolvedPath = path.resolve(filePath);
|
|
27
21
|
if (!fs.existsSync(resolvedPath)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extend-validate.js","sourceRoot":"","sources":["../../src/actions/extend-validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"extend-validate.js","sourceRoot":"","sources":["../../src/actions/extend-validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAS7C,MAAM,eAAe,GAAG,CAAC,IAAa,EAAqB,EAAE;IAC3D,MAAM,MAAM,GAAG,IAA+B,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAkC,CAAC;IACxD,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG;QACf,GAAG,IAAI,GAAG,CACR,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,IAA4C,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAC3F;KACU,CAAC;IAEd,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,MAAM;QACvB,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU;QAClC,YAAY,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAQ,EAAE;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,0BAA0B,YAAY,IAAI,CAAC,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO,CAAC,GAAG,CAAC,6BAA6B,YAAY,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;IACzD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SupportedLang } from "../utils/lang.js";
|
|
2
|
+
export interface NarrateOptions {
|
|
3
|
+
lang?: SupportedLang;
|
|
4
|
+
scaffoldOnly?: boolean;
|
|
5
|
+
force?: boolean;
|
|
6
|
+
separator?: string;
|
|
7
|
+
mermaid?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const runNarrate: (filePath: string, options: NarrateOptions) => Promise<void>;
|
|
10
|
+
//# sourceMappingURL=narrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"narrate.d.ts","sourceRoot":"","sources":["../../src/actions/narrate.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAmGD,eAAO,MAAM,UAAU,GAAU,UAAU,MAAM,EAAE,SAAS,cAAc,KAAG,OAAO,CAAC,IAAI,CA6FxF,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import { extendedScriptSchema } from "@mulmocast/extended-types";
|
|
4
|
+
import { detectFileType, getBasename, convertToMulmoScript, getMulmoScriptPath, readJsonFile, writeJsonFile, loadExtractedTexts, formatZodError, } from "./common.js";
|
|
5
|
+
import { scaffoldExtendedScript } from "./extend-scaffold.js";
|
|
6
|
+
import { convertMarkdown } from "../convert/markdown.js";
|
|
7
|
+
const isMarkdownFile = (filePath) => {
|
|
8
|
+
return path.extname(filePath).toLowerCase() === ".md";
|
|
9
|
+
};
|
|
10
|
+
const convertSourceToMulmoScript = async (filePath, options) => {
|
|
11
|
+
const absolutePath = path.resolve(filePath);
|
|
12
|
+
if (isMarkdownFile(filePath)) {
|
|
13
|
+
const result = await convertMarkdown({
|
|
14
|
+
inputPath: absolutePath,
|
|
15
|
+
lang: options.lang,
|
|
16
|
+
generateText: false,
|
|
17
|
+
separator: options.separator ?? "horizontal-rule",
|
|
18
|
+
mermaid: options.mermaid,
|
|
19
|
+
});
|
|
20
|
+
return result.mulmoScriptPath;
|
|
21
|
+
}
|
|
22
|
+
const fileType = detectFileType(filePath);
|
|
23
|
+
return convertToMulmoScript(absolutePath, fileType, {
|
|
24
|
+
generateText: false,
|
|
25
|
+
lang: options.lang,
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
const loadSourceContent = (filePath) => {
|
|
29
|
+
if (isMarkdownFile(filePath) && fs.existsSync(filePath)) {
|
|
30
|
+
return fs.readFileSync(filePath, "utf-8");
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
};
|
|
34
|
+
const buildBeatInputs = (mulmoScript, extractedTexts) => {
|
|
35
|
+
return mulmoScript.beats.map((beat, i) => {
|
|
36
|
+
const input = {
|
|
37
|
+
index: i,
|
|
38
|
+
text: beat.text,
|
|
39
|
+
};
|
|
40
|
+
// Markdown content
|
|
41
|
+
if (beat.image?.type === "markdown") {
|
|
42
|
+
const md = beat.image.markdown;
|
|
43
|
+
if (Array.isArray(md)) {
|
|
44
|
+
input.markdown = md;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Image path
|
|
48
|
+
if (beat.image?.type === "image" && beat.image.source.kind === "path") {
|
|
49
|
+
input.imagePath = beat.image.source.path;
|
|
50
|
+
}
|
|
51
|
+
// Extracted text
|
|
52
|
+
if (extractedTexts && i < extractedTexts.length && extractedTexts[i]) {
|
|
53
|
+
input.extractedText = extractedTexts[i];
|
|
54
|
+
}
|
|
55
|
+
return input;
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
const applyLLMResults = (scaffolded, llmResult) => {
|
|
59
|
+
const beats = scaffolded.beats.map((beat, i) => {
|
|
60
|
+
const beatResult = llmResult.beatResults.find((br) => br.index === i);
|
|
61
|
+
if (!beatResult) {
|
|
62
|
+
return beat;
|
|
63
|
+
}
|
|
64
|
+
const updatedBeat = { ...beat };
|
|
65
|
+
// Set narration text only if beat has no text
|
|
66
|
+
if (beatResult.text && (!beat.text || beat.text.trim() === "")) {
|
|
67
|
+
updatedBeat.text = beatResult.text;
|
|
68
|
+
}
|
|
69
|
+
// Merge meta
|
|
70
|
+
updatedBeat.meta = {
|
|
71
|
+
...beat.meta,
|
|
72
|
+
...beatResult.meta,
|
|
73
|
+
};
|
|
74
|
+
return updatedBeat;
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
...scaffolded,
|
|
78
|
+
beats,
|
|
79
|
+
scriptMeta: llmResult.scriptMeta,
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
export const runNarrate = async (filePath, options) => {
|
|
83
|
+
const inputPath = path.resolve(filePath);
|
|
84
|
+
if (!fs.existsSync(inputPath)) {
|
|
85
|
+
console.error(`File not found: ${inputPath}`);
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
const basename = getBasename(inputPath);
|
|
89
|
+
const mulmoScriptPath = getMulmoScriptPath(basename);
|
|
90
|
+
const scriptDir = path.dirname(mulmoScriptPath);
|
|
91
|
+
// Step 1: Convert source to MulmoScript
|
|
92
|
+
if (!options.force && fs.existsSync(mulmoScriptPath)) {
|
|
93
|
+
console.log(`\n✓ Using existing MulmoScript: ${mulmoScriptPath}`);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
console.log(`\nConverting ${path.basename(inputPath)} to MulmoScript...`);
|
|
97
|
+
await convertSourceToMulmoScript(inputPath, options);
|
|
98
|
+
if (!fs.existsSync(mulmoScriptPath)) {
|
|
99
|
+
console.error(`MulmoScript not generated: ${mulmoScriptPath}`);
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
console.log(`✓ MulmoScript generated: ${mulmoScriptPath}`);
|
|
103
|
+
}
|
|
104
|
+
// Step 2: Load inputs
|
|
105
|
+
const mulmoScript = readJsonFile(mulmoScriptPath);
|
|
106
|
+
const extractedTexts = loadExtractedTexts(scriptDir);
|
|
107
|
+
// Step 3: Scaffold
|
|
108
|
+
const scaffolded = scaffoldExtendedScript(mulmoScript, extractedTexts);
|
|
109
|
+
if (options.scaffoldOnly) {
|
|
110
|
+
// Write scaffold and exit
|
|
111
|
+
const outputPath = path.join(scriptDir, "extended_script.json");
|
|
112
|
+
writeJsonFile(outputPath, scaffolded);
|
|
113
|
+
console.log(`\n✓ Scaffolded ExtendedScript: ${outputPath}`);
|
|
114
|
+
console.log(` Beats: ${scaffolded.beats.length}`);
|
|
115
|
+
console.log(`\nNext: Use Claude Code to analyze and add narration/metadata`);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Step 4: LLM generation
|
|
119
|
+
console.log(`\nGenerating narration and metadata for ${scaffolded.beats.length} beats...`);
|
|
120
|
+
const beatInputs = buildBeatInputs(mulmoScript, extractedTexts);
|
|
121
|
+
const sourceContent = loadSourceContent(inputPath);
|
|
122
|
+
const lang = (options.lang ?? mulmoScript.lang ?? "en");
|
|
123
|
+
const { generateNarrationAndMetadata } = await import("../utils/llm-metadata.js");
|
|
124
|
+
const llmResult = await generateNarrationAndMetadata({
|
|
125
|
+
beats: beatInputs,
|
|
126
|
+
lang,
|
|
127
|
+
title: mulmoScript.title,
|
|
128
|
+
sourceContent,
|
|
129
|
+
});
|
|
130
|
+
// Step 5: Merge scaffold + LLM results
|
|
131
|
+
const extendedScript = applyLLMResults(scaffolded, llmResult);
|
|
132
|
+
// Step 6: Validate
|
|
133
|
+
const result = extendedScriptSchema.safeParse(extendedScript);
|
|
134
|
+
if (!result.success) {
|
|
135
|
+
console.warn(`\nWarning: Validation issues found:`);
|
|
136
|
+
console.warn(formatZodError(result.error));
|
|
137
|
+
console.warn(`Writing output anyway...`);
|
|
138
|
+
}
|
|
139
|
+
// Step 7: Write output
|
|
140
|
+
const outputPath = path.join(scriptDir, "extended_script.json");
|
|
141
|
+
writeJsonFile(outputPath, extendedScript);
|
|
142
|
+
// Summary
|
|
143
|
+
const sections = [
|
|
144
|
+
...new Set(extendedScript.beats.map((b) => b.meta?.section).filter(Boolean)),
|
|
145
|
+
];
|
|
146
|
+
const keywords = extendedScript.scriptMeta?.keywords;
|
|
147
|
+
console.log(`\n✓ ExtendedScript generated: ${outputPath}`);
|
|
148
|
+
console.log(` Beats: ${extendedScript.beats.length}`);
|
|
149
|
+
if (sections.length > 0) {
|
|
150
|
+
console.log(` Sections: ${sections.join(", ")}`);
|
|
151
|
+
}
|
|
152
|
+
if (keywords && keywords.length > 0) {
|
|
153
|
+
console.log(` Keywords: ${keywords.join(", ")}`);
|
|
154
|
+
}
|
|
155
|
+
console.log(`\nNext steps:`);
|
|
156
|
+
console.log(` # Validate`);
|
|
157
|
+
console.log(` yarn cli extend validate ${outputPath}`);
|
|
158
|
+
console.log(` # Generate video`);
|
|
159
|
+
console.log(` npx mulmocast-preprocessor ${outputPath} -o ${mulmoScriptPath}`);
|
|
160
|
+
console.log(` npx mulmo movie ${mulmoScriptPath}`);
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=narrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"narrate.js","sourceRoot":"","sources":["../../src/actions/narrate.ts"],"names":[],"mappings":"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"}
|
package/lib/cli.js
CHANGED
|
@@ -421,8 +421,69 @@ yargs(hideBin(process.argv))
|
|
|
421
421
|
const { runExtendValidate } = await import("./actions/extend-validate.js");
|
|
422
422
|
runExtendValidate(argv.file);
|
|
423
423
|
})
|
|
424
|
-
.
|
|
424
|
+
.command("scaffold <file>", "Create ExtendedScript skeleton from MulmoScript (no LLM needed)", (yargs) => {
|
|
425
|
+
return yargs.positional("file", {
|
|
426
|
+
describe: "MulmoScript JSON file to scaffold",
|
|
427
|
+
type: "string",
|
|
428
|
+
demandOption: true,
|
|
429
|
+
});
|
|
430
|
+
}, async (argv) => {
|
|
431
|
+
const { runExtendScaffold } = await import("./actions/extend-scaffold.js");
|
|
432
|
+
runExtendScaffold(argv.file);
|
|
433
|
+
})
|
|
434
|
+
.demandCommand(1, "Use 'mulmo-slide extend init', 'mulmo-slide extend validate <file>', or 'mulmo-slide extend scaffold <file>'");
|
|
425
435
|
}, () => { })
|
|
436
|
+
.command("narrate <file>", "Generate narrated ExtendedScript from source file (full pipeline)", (yargs) => {
|
|
437
|
+
return yargs
|
|
438
|
+
.positional("file", {
|
|
439
|
+
describe: "Source file (.pdf, .pptx, .md, .key)",
|
|
440
|
+
type: "string",
|
|
441
|
+
demandOption: true,
|
|
442
|
+
})
|
|
443
|
+
.options({
|
|
444
|
+
...langOption,
|
|
445
|
+
"scaffold-only": {
|
|
446
|
+
type: "boolean",
|
|
447
|
+
description: "Only create scaffold (no LLM, for Claude Code handoff)",
|
|
448
|
+
default: false,
|
|
449
|
+
},
|
|
450
|
+
f: {
|
|
451
|
+
alias: "force",
|
|
452
|
+
type: "boolean",
|
|
453
|
+
description: "Force regenerate MulmoScript even if it exists",
|
|
454
|
+
default: false,
|
|
455
|
+
},
|
|
456
|
+
s: {
|
|
457
|
+
alias: "separator",
|
|
458
|
+
type: "string",
|
|
459
|
+
description: "Slide separator mode (for Markdown files)",
|
|
460
|
+
choices: [
|
|
461
|
+
"horizontal-rule",
|
|
462
|
+
"heading",
|
|
463
|
+
"heading-1",
|
|
464
|
+
"heading-2",
|
|
465
|
+
"heading-3",
|
|
466
|
+
"blank-lines",
|
|
467
|
+
"comment",
|
|
468
|
+
"page-break",
|
|
469
|
+
],
|
|
470
|
+
},
|
|
471
|
+
mermaid: {
|
|
472
|
+
type: "boolean",
|
|
473
|
+
description: "Convert mermaid code blocks (for Markdown files)",
|
|
474
|
+
default: false,
|
|
475
|
+
},
|
|
476
|
+
});
|
|
477
|
+
}, async (argv) => {
|
|
478
|
+
const { runNarrate } = await import("./actions/narrate.js");
|
|
479
|
+
await runNarrate(argv.file, {
|
|
480
|
+
lang: argv.l,
|
|
481
|
+
scaffoldOnly: argv["scaffold-only"],
|
|
482
|
+
force: argv.f,
|
|
483
|
+
separator: argv.s,
|
|
484
|
+
mermaid: argv.mermaid,
|
|
485
|
+
});
|
|
486
|
+
})
|
|
426
487
|
.command("preview [port]", "Start MulmoViewer preview server", (yargs) => {
|
|
427
488
|
return yargs.positional("port", {
|
|
428
489
|
describe: "Port number for the server",
|
package/lib/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { SupportedLang } from "./lang.js";
|
|
2
|
+
import type { ScriptMeta, BeatMeta } from "@mulmocast/extended-types";
|
|
3
|
+
export interface BeatInput {
|
|
4
|
+
index: number;
|
|
5
|
+
text?: string;
|
|
6
|
+
markdown?: string[];
|
|
7
|
+
imagePath?: string;
|
|
8
|
+
extractedText?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface MetadataGenerationOptions {
|
|
11
|
+
beats: BeatInput[];
|
|
12
|
+
lang: SupportedLang;
|
|
13
|
+
title?: string;
|
|
14
|
+
sourceContent?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface BeatResult {
|
|
17
|
+
index: number;
|
|
18
|
+
text?: string;
|
|
19
|
+
meta: BeatMeta;
|
|
20
|
+
}
|
|
21
|
+
export interface MetadataResult {
|
|
22
|
+
scriptMeta: ScriptMeta;
|
|
23
|
+
beatResults: BeatResult[];
|
|
24
|
+
}
|
|
25
|
+
export declare const buildMetadataPrompt: (options: MetadataGenerationOptions) => string;
|
|
26
|
+
export declare const parseMetadataResponse: (content: string, beatCount: number) => MetadataResult;
|
|
27
|
+
export declare const generateNarrationAndMetadata: (options: MetadataGenerationOptions) => Promise<MetadataResult>;
|
|
28
|
+
//# sourceMappingURL=llm-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-metadata.d.ts","sourceRoot":"","sources":["../../src/utils/llm-metadata.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEtE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAmCD,eAAO,MAAM,mBAAmB,GAAI,SAAS,yBAAyB,KAAG,MA8DxE,CAAC;AAwBF,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,EAAE,WAAW,MAAM,KAAG,cAM1E,CAAC;AAwFF,eAAO,MAAM,4BAA4B,GACvC,SAAS,yBAAyB,KACjC,OAAO,CAAC,cAAc,CA0BxB,CAAC"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import { getOpenAIClient, getLanguageName, imageToBase64, getImageMediaType, extractResponseContent, } from "./llm.js";
|
|
3
|
+
const BATCH_SIZE = 25;
|
|
4
|
+
const formatSlideContent = (beat) => {
|
|
5
|
+
const parts = [`--- Slide ${beat.index + 1} ---`];
|
|
6
|
+
if (beat.markdown && beat.markdown.length > 0) {
|
|
7
|
+
parts.push(beat.markdown.join("\n"));
|
|
8
|
+
}
|
|
9
|
+
if (beat.extractedText) {
|
|
10
|
+
parts.push(`[Extracted text]: ${beat.extractedText}`);
|
|
11
|
+
}
|
|
12
|
+
if (beat.text) {
|
|
13
|
+
parts.push(`[Existing narration]: ${beat.text}`);
|
|
14
|
+
}
|
|
15
|
+
return parts.join("\n");
|
|
16
|
+
};
|
|
17
|
+
const buildTextInstruction = (beats, languageName) => {
|
|
18
|
+
const beatsNeedingText = beats.filter((b) => !b.text || b.text.trim() === "");
|
|
19
|
+
if (beatsNeedingText.length === 0) {
|
|
20
|
+
return "\nAll slides already have narration text. Do NOT generate text for any beat.";
|
|
21
|
+
}
|
|
22
|
+
return `\nGenerate narration "text" for these slides (0-based index): ${beatsNeedingText.map((b) => b.index).join(", ")}
|
|
23
|
+
Slides that already have narration should NOT have "text" in their beatResults entry.
|
|
24
|
+
|
|
25
|
+
Narration style:
|
|
26
|
+
- Write in ${languageName}
|
|
27
|
+
- Speak directly to the audience as if presenting live
|
|
28
|
+
- NEVER use meta-references like "this slide shows", "here we see"
|
|
29
|
+
- Deliver substantive, insightful explanations
|
|
30
|
+
- Use a confident, engaging speaking style suitable for text-to-speech`;
|
|
31
|
+
};
|
|
32
|
+
export const buildMetadataPrompt = (options) => {
|
|
33
|
+
const { beats, lang, title, sourceContent } = options;
|
|
34
|
+
const languageName = getLanguageName(lang);
|
|
35
|
+
const slideContents = beats.map(formatSlideContent).join("\n\n");
|
|
36
|
+
const sourceSection = sourceContent
|
|
37
|
+
? `\nOriginal source document:\n\`\`\`\n${sourceContent}\n\`\`\`\n`
|
|
38
|
+
: "";
|
|
39
|
+
const textInstruction = buildTextInstruction(beats, languageName);
|
|
40
|
+
return `You are analyzing a presentation to generate metadata and narration.
|
|
41
|
+
|
|
42
|
+
Title: ${title || "Untitled Presentation"}
|
|
43
|
+
${sourceSection}
|
|
44
|
+
Here are the slides:
|
|
45
|
+
|
|
46
|
+
${slideContents}
|
|
47
|
+
|
|
48
|
+
Generate the following JSON response:
|
|
49
|
+
|
|
50
|
+
{
|
|
51
|
+
"scriptMeta": {
|
|
52
|
+
"background": "1-2 sentence overview of the theme",
|
|
53
|
+
"audience": "target audience description",
|
|
54
|
+
"goals": ["2-4 learning objectives"],
|
|
55
|
+
"keywords": ["5-10 main keywords"],
|
|
56
|
+
"references": [{"type": "web|code|document|video", "url": "...", "title": "..."}],
|
|
57
|
+
"author": "author if identifiable, or omit",
|
|
58
|
+
"faq": [{"question": "...", "answer": "...", "relatedBeats": ["beat-N"]}]
|
|
59
|
+
},
|
|
60
|
+
"beatResults": [
|
|
61
|
+
{
|
|
62
|
+
"index": <0-based index>,
|
|
63
|
+
"text": "<narration text, only if slide has no existing narration>",
|
|
64
|
+
"meta": {
|
|
65
|
+
"section": "lowercase-kebab-case section name",
|
|
66
|
+
"tags": ["content type tags: intro, overview, definition, example, code, diagram, data, table, demo, comparison, summary, conclusion, q-and-a"],
|
|
67
|
+
"keywords": ["2-5 beat-specific terms"],
|
|
68
|
+
"context": "background info for AI query/summarize - be substantive",
|
|
69
|
+
"expectedQuestions": ["1-3 natural audience questions"]
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
${textInstruction}
|
|
75
|
+
|
|
76
|
+
For scriptMeta:
|
|
77
|
+
- Write all text in ${languageName}
|
|
78
|
+
- "references": only include URLs found in the content. Omit if none.
|
|
79
|
+
- "author": omit if not identifiable
|
|
80
|
+
- "faq": 2-4 likely questions with substantive answers
|
|
81
|
+
|
|
82
|
+
For each beat's meta:
|
|
83
|
+
- "section": consecutive beats in the same logical section share the same value
|
|
84
|
+
- "tags": 2-4 tags per beat
|
|
85
|
+
- "context": most important field - add supplementary info, related concepts, technical background
|
|
86
|
+
- "expectedQuestions": natural questions a real audience member would ask
|
|
87
|
+
- "keywords": prefer specific technical terms
|
|
88
|
+
|
|
89
|
+
Respond ONLY with valid JSON.`;
|
|
90
|
+
};
|
|
91
|
+
const buildResultMap = (rawResults) => {
|
|
92
|
+
const map = new Map();
|
|
93
|
+
rawResults.forEach((r) => map.set(r.index, r));
|
|
94
|
+
return map;
|
|
95
|
+
};
|
|
96
|
+
const fillBeatResults = (resultMap, beatCount) => {
|
|
97
|
+
return Array.from({ length: beatCount }, (_, i) => {
|
|
98
|
+
const raw = resultMap.get(i);
|
|
99
|
+
return {
|
|
100
|
+
index: i,
|
|
101
|
+
text: raw?.text,
|
|
102
|
+
meta: raw?.meta ?? {},
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
export const parseMetadataResponse = (content, beatCount) => {
|
|
107
|
+
const parsed = JSON.parse(content);
|
|
108
|
+
const scriptMeta = parsed.scriptMeta ?? {};
|
|
109
|
+
const resultMap = buildResultMap(parsed.beatResults ?? []);
|
|
110
|
+
const beatResults = fillBeatResults(resultMap, beatCount);
|
|
111
|
+
return { scriptMeta, beatResults };
|
|
112
|
+
};
|
|
113
|
+
const buildImageContents = (beats) => {
|
|
114
|
+
return beats
|
|
115
|
+
.filter((b) => b.imagePath && fs.existsSync(b.imagePath))
|
|
116
|
+
.flatMap((b) => {
|
|
117
|
+
const base64 = imageToBase64(b.imagePath);
|
|
118
|
+
const mediaType = getImageMediaType(b.imagePath);
|
|
119
|
+
return [
|
|
120
|
+
{ type: "text", text: `--- Slide ${b.index + 1} ---` },
|
|
121
|
+
{
|
|
122
|
+
type: "image_url",
|
|
123
|
+
image_url: { url: `data:${mediaType};base64,${base64}`, detail: "high" },
|
|
124
|
+
},
|
|
125
|
+
];
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
const callLLMForMetadata = async (options, hasImages) => {
|
|
129
|
+
const prompt = buildMetadataPrompt(options);
|
|
130
|
+
const content = hasImages
|
|
131
|
+
? [{ type: "text", text: prompt }, ...buildImageContents(options.beats)]
|
|
132
|
+
: prompt;
|
|
133
|
+
const response = await getOpenAIClient().chat.completions.create({
|
|
134
|
+
model: "gpt-4o",
|
|
135
|
+
messages: [{ role: "user", content }],
|
|
136
|
+
response_format: { type: "json_object" },
|
|
137
|
+
});
|
|
138
|
+
return extractResponseContent(response);
|
|
139
|
+
};
|
|
140
|
+
const deduplicateRefs = (results) => {
|
|
141
|
+
const allRefs = results.flatMap((r) => r.scriptMeta.references ?? []);
|
|
142
|
+
const unique = allRefs.filter((ref, i, arr) => arr.findIndex((r) => r.url === ref.url) === i);
|
|
143
|
+
return unique.length > 0 ? unique : undefined;
|
|
144
|
+
};
|
|
145
|
+
const mergeMetadataResults = (results) => {
|
|
146
|
+
if (results.length === 1) {
|
|
147
|
+
return results[0];
|
|
148
|
+
}
|
|
149
|
+
const scriptMeta = {
|
|
150
|
+
...results[0].scriptMeta,
|
|
151
|
+
keywords: [...new Set(results.flatMap((r) => r.scriptMeta.keywords ?? []))],
|
|
152
|
+
faq: results.flatMap((r) => r.scriptMeta.faq ?? []),
|
|
153
|
+
references: deduplicateRefs(results),
|
|
154
|
+
};
|
|
155
|
+
const beatResults = results.flatMap((r) => r.beatResults);
|
|
156
|
+
return { scriptMeta, beatResults };
|
|
157
|
+
};
|
|
158
|
+
const createBatches = (beats) => {
|
|
159
|
+
return Array.from({ length: Math.ceil(beats.length / BATCH_SIZE) }, (_, i) => beats.slice(i * BATCH_SIZE, (i + 1) * BATCH_SIZE));
|
|
160
|
+
};
|
|
161
|
+
const remapBeatIndices = (result, offset) => ({
|
|
162
|
+
...result,
|
|
163
|
+
beatResults: result.beatResults.map((br) => ({ ...br, index: br.index + offset })),
|
|
164
|
+
});
|
|
165
|
+
const processBatch = async (batchBeats, batchIndex, totalBatches, globalOffset, options, hasImages) => {
|
|
166
|
+
console.log(` Batch ${batchIndex + 1}/${totalBatches} (beats ${globalOffset + 1}-${globalOffset + batchBeats.length})...`);
|
|
167
|
+
const content = await callLLMForMetadata({ ...options, beats: batchBeats }, hasImages);
|
|
168
|
+
const result = parseMetadataResponse(content, batchBeats.length);
|
|
169
|
+
return remapBeatIndices(result, globalOffset);
|
|
170
|
+
};
|
|
171
|
+
export const generateNarrationAndMetadata = async (options) => {
|
|
172
|
+
const { beats } = options;
|
|
173
|
+
const hasImages = beats.some((b) => b.imagePath);
|
|
174
|
+
if (beats.length <= BATCH_SIZE) {
|
|
175
|
+
const content = await callLLMForMetadata(options, hasImages);
|
|
176
|
+
return parseMetadataResponse(content, beats.length);
|
|
177
|
+
}
|
|
178
|
+
console.log(`Processing ${beats.length} beats in batches of ${BATCH_SIZE}...`);
|
|
179
|
+
const batches = createBatches(beats);
|
|
180
|
+
const results = [];
|
|
181
|
+
for (const [i, batchBeats] of batches.entries()) {
|
|
182
|
+
const result = await processBatch(batchBeats, i, batches.length, i * BATCH_SIZE, options, hasImages);
|
|
183
|
+
results.push(result);
|
|
184
|
+
}
|
|
185
|
+
return mergeMetadataResults(results);
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=llm-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-metadata.js","sourceRoot":"","sources":["../../src/utils/llm-metadata.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/llm.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import OpenAI from "openai";
|
|
1
2
|
import type { SupportedLang } from "./lang.js";
|
|
3
|
+
export declare function getOpenAIClient(): OpenAI;
|
|
2
4
|
interface SlideContent {
|
|
3
5
|
index: number;
|
|
4
6
|
markdown?: string[];
|
|
@@ -15,6 +17,10 @@ interface GeneratedText {
|
|
|
15
17
|
index: number;
|
|
16
18
|
text: string;
|
|
17
19
|
}
|
|
20
|
+
export declare function getLanguageName(lang: SupportedLang): string;
|
|
21
|
+
export declare function imageToBase64(imagePath: string): string;
|
|
22
|
+
export declare function getImageMediaType(imagePath: string): "image/png" | "image/jpeg";
|
|
23
|
+
export declare function extractResponseContent(response: OpenAI.Chat.ChatCompletion): string;
|
|
18
24
|
export declare function generateTextFromMarkdown(options: GenerateTextOptions): Promise<GeneratedText[]>;
|
|
19
25
|
export declare function generateTextFromImages(options: GenerateTextOptions): Promise<GeneratedText[]>;
|
|
20
26
|
export {};
|
package/lib/utils/llm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/utils/llm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/utils/llm.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI/C,wBAAgB,eAAe,IAAI,MAAM,CAKxC;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,mBAAmB;IAC3B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAQ3D;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,CAG/E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,MAAM,CAMnF;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,aAAa,EAAE,CAAC,CAoD1B;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,aAAa,EAAE,CAAC,CAkF1B"}
|
package/lib/utils/llm.js
CHANGED
|
@@ -2,13 +2,13 @@ import OpenAI from "openai";
|
|
|
2
2
|
import * as fs from "fs";
|
|
3
3
|
import * as path from "path";
|
|
4
4
|
let openaiClient = null;
|
|
5
|
-
function getOpenAIClient() {
|
|
5
|
+
export function getOpenAIClient() {
|
|
6
6
|
if (!openaiClient) {
|
|
7
7
|
openaiClient = new OpenAI();
|
|
8
8
|
}
|
|
9
9
|
return openaiClient;
|
|
10
10
|
}
|
|
11
|
-
function getLanguageName(lang) {
|
|
11
|
+
export function getLanguageName(lang) {
|
|
12
12
|
const langNames = {
|
|
13
13
|
en: "English",
|
|
14
14
|
ja: "Japanese",
|
|
@@ -17,15 +17,22 @@ function getLanguageName(lang) {
|
|
|
17
17
|
};
|
|
18
18
|
return langNames[lang];
|
|
19
19
|
}
|
|
20
|
-
function imageToBase64(imagePath) {
|
|
20
|
+
export function imageToBase64(imagePath) {
|
|
21
21
|
const absolutePath = path.resolve(imagePath);
|
|
22
22
|
const imageBuffer = fs.readFileSync(absolutePath);
|
|
23
23
|
return imageBuffer.toString("base64");
|
|
24
24
|
}
|
|
25
|
-
function getImageMediaType(imagePath) {
|
|
25
|
+
export function getImageMediaType(imagePath) {
|
|
26
26
|
const ext = path.extname(imagePath).toLowerCase();
|
|
27
27
|
return ext === ".jpg" || ext === ".jpeg" ? "image/jpeg" : "image/png";
|
|
28
28
|
}
|
|
29
|
+
export function extractResponseContent(response) {
|
|
30
|
+
const content = response.choices[0]?.message?.content;
|
|
31
|
+
if (!content) {
|
|
32
|
+
throw new Error("No response from OpenAI");
|
|
33
|
+
}
|
|
34
|
+
return content;
|
|
35
|
+
}
|
|
29
36
|
export async function generateTextFromMarkdown(options) {
|
|
30
37
|
const { slides, lang, title } = options;
|
|
31
38
|
const languageName = getLanguageName(lang);
|
|
@@ -71,11 +78,7 @@ Respond in JSON format:
|
|
|
71
78
|
messages: [{ role: "user", content: prompt }],
|
|
72
79
|
response_format: { type: "json_object" },
|
|
73
80
|
});
|
|
74
|
-
const
|
|
75
|
-
if (!content) {
|
|
76
|
-
throw new Error("No response from OpenAI");
|
|
77
|
-
}
|
|
78
|
-
const result = JSON.parse(content);
|
|
81
|
+
const result = JSON.parse(extractResponseContent(response));
|
|
79
82
|
return result.slides;
|
|
80
83
|
}
|
|
81
84
|
export async function generateTextFromImages(options) {
|
|
@@ -150,11 +153,7 @@ Respond in JSON format:
|
|
|
150
153
|
messages: [{ role: "user", content: imageContents }],
|
|
151
154
|
response_format: { type: "json_object" },
|
|
152
155
|
});
|
|
153
|
-
const
|
|
154
|
-
if (!content) {
|
|
155
|
-
throw new Error("No response from OpenAI");
|
|
156
|
-
}
|
|
157
|
-
const result = JSON.parse(content);
|
|
156
|
+
const result = JSON.parse(extractResponseContent(response));
|
|
158
157
|
return result.slides;
|
|
159
158
|
}
|
|
160
159
|
//# sourceMappingURL=llm.js.map
|
package/lib/utils/llm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/utils/llm.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,IAAI,YAAY,GAAkB,IAAI,CAAC;AAEvC,
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/utils/llm.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mulmocast/slide",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Convert presentations (Keynote, PowerPoint, PDF, Marp) and videos to MulmoScript format",
|
|
5
5
|
"homepage": "https://github.com/receptron/MulmoCast-Slides#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
"transcribe": "tsx src/cli.ts transcribe",
|
|
55
55
|
"movie": "tsx src/cli.ts movie",
|
|
56
56
|
"bundle": "tsx src/cli.ts bundle",
|
|
57
|
+
"narrate": "tsx src/cli.ts narrate",
|
|
57
58
|
"upload": "tsx src/cli.ts upload",
|
|
58
59
|
"test:keynote": "tsx src/cli.ts keynote samples/GraphAI.key",
|
|
59
60
|
"test:marp": "tsx src/cli.ts marp samples/sample.md",
|