@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.
@@ -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 Command
11
+ ## CLI Commands Overview
12
12
 
13
- Determine the correct CLI command prefix by checking `package.json` in the project root:
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
- Use this prefix (referred to as `{cli}` below) for all CLI calls in the steps.
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 Command
13
+ ## CLI Commands Overview
14
14
 
15
- Determine the correct CLI command prefix by checking `package.json` in the project root:
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
- Use this prefix (referred to as `{cli}` below) for all CLI calls in the steps.
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
- ## Instructions
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
- ### Step 1: Convert Source to MulmoScript
25
+ ### CLI prefix for mulmo-slide
24
26
 
25
- Detect the file format and run the appropriate converter.
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
- **PDF:**
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
- **PPTX:**
33
- ```bash
34
- {cli} pptx <file>
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} markdown <file>
41
+ {cli} narrate <file> --scaffold-only
40
42
  ```
41
43
 
42
- **Keynote (.key):**
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} keynote <file>
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 slides/beats were generated
51
- - Whether `extracted_texts.json` exists (PDF only)
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}/mulmo_script.json`
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. `scripts/{basename}/extracted_texts.json` (if it exists, generated by PDF converter — provides raw text per beat)
60
- 4. The original source `.md` file (if Markdown, for speaker notes and structure)
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
@@ -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"}
@@ -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":"AAuCA,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,IAmCpD,CAAC"}
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":"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"}
1
+ {"version":3,"file":"extend-validate.js","sourceRoot":"","sources":["../../src/actions/extend-validate.ts"],"names":[],"mappings":"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"}
@@ -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
- .demandCommand(1, "Use 'mulmo-slide extend init' or 'mulmo-slide extend validate <file>'");
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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"}
@@ -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 {};
@@ -1 +1 @@
1
- {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/utils/llm.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAW/C,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;AAuBD,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,aAAa,EAAE,CAAC,CAyD1B;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,aAAa,EAAE,CAAC,CAuF1B"}
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 content = response.choices[0]?.message?.content;
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 content = response.choices[0]?.message?.content;
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
@@ -1 +1 @@
1
- {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/utils/llm.ts"],"names":[],"mappings":"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"}
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.2",
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",