@lalalic/markcut 2.2.3 → 2.2.4
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/package.json
CHANGED
package/skills/markcut/SKILL.md
CHANGED
|
@@ -66,4 +66,11 @@ some common issues (photo or video can't be displayed, audio missing), take belo
|
|
|
66
66
|
- `rehype-katex` — render math formulas with KaTeX
|
|
67
67
|
|
|
68
68
|
- `@remotion/shapes` — render shapes like arrows, circles, rectangles, etc
|
|
69
|
-
- `@remotion/starburst` — render starburst animations
|
|
69
|
+
- `@remotion/starburst` — render starburst animations
|
|
70
|
+
|
|
71
|
+
## Golden rule
|
|
72
|
+
- always check stream start and duration to avoid
|
|
73
|
+
- audio cut off
|
|
74
|
+
- video cut off
|
|
75
|
+
- subtitle mismatch
|
|
76
|
+
- sync issues between audio, video, and subtitles
|
|
@@ -35,7 +35,11 @@ The line after `# video` contains all video configuration as space-separated
|
|
|
35
35
|
|
|
36
36
|
```markdown
|
|
37
37
|
# video
|
|
38
|
-
width:1920 height:1080 fps:30 layout:series
|
|
38
|
+
width:1920 height:1080 fps:30 layout:series
|
|
39
|
+
~~~css stylesheet
|
|
40
|
+
.bg { background: #000; }
|
|
41
|
+
~~~
|
|
42
|
+
subtitle:captions.vtt
|
|
39
43
|
```
|
|
40
44
|
|
|
41
45
|
Supported keys: `width`, `height`, `fps`, `layout`, `tts`, `stt`, `tti`, `ttv`,
|
|
@@ -145,8 +149,10 @@ For compatibility, `import { Name } from "spec"` also works and produces the sam
|
|
|
145
149
|
| `height` | canvas height | root |
|
|
146
150
|
| `fps` | frame rate | root |
|
|
147
151
|
| `theme` | *removed — use `style` on root* | root |
|
|
148
|
-
| `tts` | CLI template string
|
|
149
|
-
| `stt` | CLI template string
|
|
152
|
+
| `tts` | text-to-speech CLI template string | root |
|
|
153
|
+
| `stt` | speech-to-text CLI template string | root |
|
|
154
|
+
| `tti` | text-to-image CLI template string | root |
|
|
155
|
+
| `ttv` | text-to-video CLI template string | root |
|
|
150
156
|
| `layout` | `series\|parallel\|transitionSeries` | root, scene |
|
|
151
157
|
| `transition` | `fade\|slide\|wipe\|flip\|clockWipe` | transitionSeries |
|
|
152
158
|
| `transitionTime` | seconds | transitionSeries |
|
|
@@ -176,7 +182,6 @@ For compatibility, `import { Name } from "spec"` also works and produces the sam
|
|
|
176
182
|
| `script` | narration/dialogue text; TTS source; NOT rendered directly | audio | Only on audio nodes — see Narration section below |
|
|
177
183
|
| `speaker` | speaker name for multi-turn dialogue; set automatically by dialogue expansion | audio | Used for per-speaker voice lookup and subtitle prefix |
|
|
178
184
|
| `voices` | JSON object mapping speaker names to extra TTS CLI flags e.g. `{"Ray":"--voice en-US-GuyNeural"}` | root | Flags are appended to the resolved TTS CLI template |
|
|
179
|
-
| `tts` | CLI template string e.g. `"edge-tts --voice en-US-GuyNeural --text {input} --write-media {output}"` | root | Set once at the root level; all TTS uses this template |
|
|
180
185
|
| `metadata` | arbitrary metadata string | root |
|
|
181
186
|
| `stylesheet` | global CSS string; selectors use `.className` on elements | root |
|
|
182
187
|
| `style` | inline CSS applied to the node's container div e.g. `"border-radius:12px"` | any |
|
|
@@ -59,7 +59,6 @@ What tools/skills the agent needs before starting. Always include:
|
|
|
59
59
|
|
|
60
60
|
- The engine itself: `npx @lalalic/markcut` runnable
|
|
61
61
|
- Required markcut skill (`SKILL.md` + `docs/markdown-descriptive.md`) — the agent must read these
|
|
62
|
-
- Required CLIs: `edge-tts`, `ffmpeg`/`ffprobe`, whisper, image-understanding (for reviewer)
|
|
63
62
|
- Any domain-specific tools
|
|
64
63
|
|
|
65
64
|
### §1 Inputs — the contract with the user
|
|
@@ -9,26 +9,6 @@ engine: "@lalalic/markcut — run via `npx @lalalic/markcut`"
|
|
|
9
9
|
|
|
10
10
|
Follow this file top to bottom. Read the markcut skill (`SKILL.md` → `docs/markdown-descriptive.md`) first if you have not.
|
|
11
11
|
|
|
12
|
-
```mermaid
|
|
13
|
-
flowchart LR
|
|
14
|
-
Profile[👤 user.md<br/>profile] --> Writer
|
|
15
|
-
History[📜 vlog_history.json<br/>past entries] --> Writer
|
|
16
|
-
Media[📁 Media folder] --> Vision[🧠 markcut vision --label]
|
|
17
|
-
Vision --> Labels[📝 metadata.json]
|
|
18
|
-
Labels --> Group[🔍 group-clips.md<br/>filter + group]
|
|
19
|
-
Group --> Groups[📋 grouped scenes]
|
|
20
|
-
Locale[🌍 local-context.md<br/>weather, events, news] --> Groups
|
|
21
|
-
Groups --> Writer[✍️ story-writer agent<br/>narration + title]
|
|
22
|
-
Writer --> Storyboard[📄 course.md]
|
|
23
|
-
BGM[🎵 bgm-select.md<br/>mandatory BGM] --> Assemble[📦 assemble + render]
|
|
24
|
-
Storyboard --> Assemble
|
|
25
|
-
Assemble --> MP4[📺 final.mp4]
|
|
26
|
-
MP4 --> Reviewer[🔍 reviewer agent]
|
|
27
|
-
Reviewer -->|FAIL| Fix[🔧 fix]
|
|
28
|
-
Fix --> Assemble
|
|
29
|
-
Reviewer -->|PASS| HistoryUpdate[📝 append to<br/>vlog_history.json]
|
|
30
|
-
```
|
|
31
|
-
|
|
32
12
|
| Path | Runs in | Purpose |
|
|
33
13
|
|---|---|---|
|
|
34
14
|
| `TEMPLATE.md` | your context | everything |
|
|
@@ -38,10 +18,7 @@ flowchart LR
|
|
|
38
18
|
## 0. Prerequisites
|
|
39
19
|
|
|
40
20
|
- `npx @lalalic/markcut` runnable
|
|
41
|
-
-
|
|
42
|
-
- `ffmpeg`/`ffprobe` on PATH
|
|
43
|
-
- For vision pipeline: ITT/VTT/STT CLIs configured (see `docs/markdown-descriptive.md` for env vars)
|
|
44
|
-
- For reviewer: image-understanding capability, STT CLI
|
|
21
|
+
- `ffmpeg`/`ffprobe`/`exiftool` on PATH
|
|
45
22
|
|
|
46
23
|
## 1. Inputs — collect before starting
|
|
47
24
|
|
|
@@ -50,13 +27,13 @@ flowchart LR
|
|
|
50
27
|
| Media folder | **yes** | — | absolute path to folder of photos/videos |
|
|
51
28
|
| Theme / event name | **yes** | — | e.g. "birthday camping", "Tokyo trip", "product unboxing" |
|
|
52
29
|
| Date range | no | from media EXIF | — |
|
|
53
|
-
| Language | no |
|
|
30
|
+
| Language | no | zh | narrator's language |
|
|
54
31
|
| Style | no | `daily` | `daily` (casual), `lyrical` (cinematic), `humorous` (funny) |
|
|
55
32
|
| Target duration | no | 60s | 15–120s for short vlogs |
|
|
56
|
-
| Profile | **parse from** |
|
|
33
|
+
| Profile | **parse from** | context | user's personality, region, family members, voice ref, life context. Read this file at the start — it's the authoritative source for who the creator is. The creator's name, region, family, and regular activities feed into narration naturally ("my daughter", "drove up from Ottawa", "my third camping trip this year"). |
|
|
57
34
|
| Voice | no | en: `en-US-GuyNeural` | edge-tts voice. If profile has a voice reference URL, use TTS voice cloning instead |
|
|
58
35
|
| BGM style | no | `ambient` | mood/genre for background music. BGM is **mandatory** — see §2 for root-level audio node |
|
|
59
|
-
| Vlog history | **read from** | `vlog_history.json` | JSON array of past vlogs in the project. Used for story continuity ("last time I was here...", "my third camping trip this year"). If the file doesn't exist, start fresh. See §3 for history rules. |
|
|
36
|
+
| Vlog history | **read from** | `vlog_history.json` or folder | JSON array of past vlogs in the project. Used for story continuity ("last time I was here...", "my third camping trip this year"). If the file doesn't exist, start fresh. See §3 for history rules. |
|
|
60
37
|
|
|
61
38
|
**Rule:** The golden rule of vlogs — **every word in narration, title, or captions must be traceable to real data**: (1) user-stated facts, (2) clip VLM descriptions, (3) GPS/timestamp metadata, (4) user labels from interactive labeling, (5) local news/searched events for the date/location. Never invent people, dialogue, events, or place names. When unsure, paraphrase conservatively ("a path", "someone") rather than guessing.
|
|
62
39
|
|