@lalalic/markcut 2.2.7 → 2.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/package.json +2 -1
  2. package/skills/markcut/SKILL.md +0 -2
  3. package/skills/markcut/docs/markdown-descriptive.md +1 -1
  4. package/src/config.mjs +60 -63
  5. package/src/descriptive/resolve.ts +3 -2
  6. package/src/player/browser.tsx +3 -1
  7. package/src/player/bundle/player.js +7 -2
  8. package/src/player/components/SceneThumbnails.tsx +3 -1
  9. package/src/player/pipeline.mjs +64 -21
  10. package/src/player/server.mjs +11 -2
  11. package/src/render/cli.mjs +42 -69
  12. package/src/vision/cli.mjs +21 -45
  13. package/skills/markcut/docs/template.md +0 -212
  14. package/skills/markcut/docs/templates/courseware/TEMPLATE.md +0 -526
  15. package/skills/markcut/docs/templates/courseware/agents/reviewer.md +0 -84
  16. package/skills/markcut/docs/templates/courseware/prompts/fix.md +0 -30
  17. package/skills/markcut/docs/templates/courseware/prompts/outline.md +0 -58
  18. package/skills/markcut/docs/templates/courseware/prompts/scene.md +0 -70
  19. package/skills/markcut/docs/templates/deep-dive/TEMPLATE.md +0 -354
  20. package/skills/markcut/docs/templates/deep-dive/agents/researcher.md +0 -69
  21. package/skills/markcut/docs/templates/deep-dive/agents/reviewer.md +0 -108
  22. package/skills/markcut/docs/templates/deep-dive/prompts/fix.md +0 -28
  23. package/skills/markcut/docs/templates/deep-dive/prompts/outline.md +0 -102
  24. package/skills/markcut/docs/templates/deep-dive/prompts/script.md +0 -64
  25. package/skills/markcut/docs/templates/illustrated-book/TEMPLATE.md +0 -356
  26. package/skills/markcut/docs/templates/illustrated-book/agents/reviewer.md +0 -115
  27. package/skills/markcut/docs/templates/illustrated-book/prompts/fix.md +0 -29
  28. package/skills/markcut/docs/templates/illustrated-book/prompts/illustration.md +0 -35
  29. package/skills/markcut/docs/templates/illustrated-book/prompts/story.md +0 -69
  30. package/skills/markcut/docs/templates/short-film/TEMPLATE.md +0 -385
  31. package/skills/markcut/docs/templates/short-film/agents/reviewer.md +0 -115
  32. package/skills/markcut/docs/templates/short-film/prompts/fix.md +0 -29
  33. package/skills/markcut/docs/templates/short-film/prompts/screenplay.md +0 -101
  34. package/skills/markcut/docs/templates/short-film/prompts/storyboard.md +0 -54
  35. package/skills/markcut/docs/templates/short-video/TEMPLATE.md +0 -301
  36. package/skills/markcut/docs/templates/short-video/agents/reviewer.md +0 -94
  37. package/skills/markcut/docs/templates/short-video/prompts/fix.md +0 -27
  38. package/skills/markcut/docs/templates/short-video/prompts/script.md +0 -65
  39. package/skills/markcut/docs/templates/vlog/TEMPLATE.md +0 -326
  40. package/skills/markcut/docs/templates/vlog/agents/reviewer.md +0 -89
  41. package/skills/markcut/docs/templates/vlog/agents/story-writer.md +0 -100
  42. package/skills/markcut/docs/templates/vlog/prompts/bgm-select.md +0 -38
  43. package/skills/markcut/docs/templates/vlog/prompts/group-clips.md +0 -93
  44. package/skills/markcut/docs/templates/vlog/prompts/local-context.md +0 -59
  45. package/skills/markcut/docs/templates/vlog/prompts/outline.md +0 -56
  46. package/skills/markcut/docs/templates/vlog/prompts/review-fix.md +0 -27
  47. package/skills/markcut/docs/templates/vlog/prompts/storyboard.md +0 -41
  48. package/src/render/cli.test.ts +0 -13
@@ -1,59 +0,0 @@
1
- # Prompt: Search Local Context (News, Weather, Events)
2
-
3
- > Fill every `{placeholder}`, then execute in your own context.
4
- > Runs after Phase 1 (media understanding) before storyboard writing.
5
- > Uses web search to find real facts about the vlog's location and date.
6
-
7
- ---
8
-
9
- You are researching local context for a vlog about "{theme}" at {location}.
10
-
11
- Date range: {date_range} (or approximate dates from media timestamps)
12
- Location description: {location} (from GPS reverse-geocode or user input)
13
- Vlog style: {style}
14
-
15
- ## Task
16
-
17
- Search for the following and report real facts that could naturally weave into the narration:
18
-
19
- 1. **Weather** — What was the weather like on those dates? High/low temps, conditions (sunny, rainy, cloudy), notable patterns (heatwave, storm, full moon).
20
- 2. **Local events** — Any festivals, markets, sports events, holidays, or community gatherings happening at that location during the date range.
21
- 3. **Seasonal context** — Seasonal highlights: fall colours, cherry blossoms, ski season opening, migration patterns, park hours.
22
- 4. **Recent news** — Any notable local news near that location within the week before the vlog dates (park closures, trail openings, wildlife alerts, cultural events).
23
-
24
- Use multiple search queries for coverage. Prefer official sources (weather service, park website, local news).
25
-
26
- ## Output format
27
-
28
- ```
29
- ## Local Context
30
-
31
- Weather:
32
- - <fact 1> (source: <url>)
33
- - <fact 2> (source: <url>)
34
-
35
- Events:
36
- - <fact> (source: <url>)
37
-
38
- Seasonal:
39
- - <fact> (source: <url>)
40
-
41
- News:
42
- - <fact> (source: <url>)
43
-
44
- ## Amplification ideas (optional, for narrator)
45
-
46
- - <How a fact amplifies the story: "The fall colours festival meant the park was busier than usual, which explains the crowded trail clip">
47
- - <Another idea>
48
- ```
49
-
50
- ## Rules
51
-
52
- - Only include facts confirmed by at least one web source. If a search yields nothing useful for a category, write "None found."
53
- - Do not invent weather, events, or news.
54
- - The amplification ideas are suggestions only — the story-writer decides whether to use them.
55
- - Focus on facts that **connect** to what the media shows (weather matching the sky in photos, events explaining crowds, seasonal features matching the scenery).
56
-
57
- ## After this step
58
-
59
- Pass the result to the storyboard phase (Phase 3). The story-writer agent or outline prompt should receive the local context as an additional input. Use at most **2 local-context references** in the final narration — enough to add color, not enough to overwhelm the personal story.
@@ -1,56 +0,0 @@
1
- # Prompt: Vlog Outline — Narrative Arc
2
-
3
- > Fill every `{placeholder}`, then execute in your own context.
4
- > Reads: `metadata.json` (per-clip captions, aes_score, GPS), project inputs.
5
-
6
- ---
7
-
8
- You are planning a {duration_min}-second {style} vlog: "{theme}".
9
-
10
- Creator: {creator_profile}
11
- Language: {language}
12
-
13
- Given the clip understanding below, plan the narrative arc.
14
-
15
- Clip understanding (from `markcut vision --label`):
16
- - Total clips: {total_clips}
17
- - Dominant mood: {dominant_mood}
18
- - Narrative summary: {narrative_summary}
19
- - Key subjects: {key_subjects}
20
- {clips_detail}
21
-
22
- Requirements:
23
-
24
- 1. **Hook → Core → Vibe → Close arc**: First scene hooks the viewer with the best visual + intriguing line. Middle scenes are chronological story beats. Final scene provides closure.
25
-
26
- 2. **Visual continuity**: Clips sharing same background/outfit/subject-state form one scene. No jumping A→B→A.
27
-
28
- 3. **Drop rules**: Keep all clips unless aes_score < 0.4, near-duplicate, or off-topic. Max ~20% drops. Never below 5 clips.
29
-
30
- 4. **GPS**: {gps_info} — if ≥2 GPS waypoints, include a route scene with map.
31
-
32
- Output format:
33
-
34
- ```
35
- ## Scene Plan
36
-
37
- ### Route Scene (if applicable)
38
- - waypoints: <list>
39
- - route narration: <one line describing the route>
40
-
41
- ### Scene 1: <title>
42
- - clips: <filenames with time ranges>
43
- - narration: <first-person line, 10-40 words>
44
- - mood: <mood word>
45
- - duration: <estimated seconds>
46
-
47
- ### Scene 2: <title>
48
- ...
49
-
50
- ### Scene N: <title>
51
-
52
- Dropped clips:
53
- - <filename>: <reason>
54
-
55
- Title suggestion: <3-15 words>
56
- ```
@@ -1,27 +0,0 @@
1
- # Prompt: Apply Reviewer Findings
2
-
3
- > Fill every `{placeholder}`, then execute in your own context.
4
- > Used after a FAIL verdict. You edit; the reviewer never does.
5
-
6
- ---
7
-
8
- Apply the reviewer findings below to `{vlog_md_path}` with minimal, targeted edits.
9
-
10
- Reviewer findings (JSON):
11
-
12
- {findings_json}
13
-
14
- Rules:
15
- - Address every `blocker` and `major` finding. Minor findings only when trivially fixable.
16
- - Each fix must respect TEMPLATE.md §2 scene grammar and §3 authoring rules.
17
- - Narration fabrication → rewrite the line to use conservative paraphrase of clip captions.
18
- - Broken src → fix the path or add a placeholder image.
19
- - Duration mismatch → shorten/lengthen narration and adjust subtitle `duration:`.
20
- - Blank frames → check startFrom/endAt values, clip ordering, and file existence.
21
-
22
- After editing, list what changed:
23
- ```
24
- - <finding id>: <scene> — <one-line description of the edit>
25
- ```
26
-
27
- Then re-render and re-review.
@@ -1,41 +0,0 @@
1
- # Prompt: Vlog Scene → Markcut Markdown
2
-
3
- > Fill every `{placeholder}`, then execute in your own context.
4
- > Run once per scene in the outline. Constraints mirror TEMPLATE.md §2/§3.
5
-
6
- ---
7
-
8
- You are writing one scene of a {style} vlog. The scene will be rendered with markcut markdown syntax.
9
-
10
- Theme: {theme}
11
- Creator: {creator_profile}
12
- Language: {language}
13
-
14
- Scene from outline:
15
-
16
- {outline_scene}
17
-
18
- All clips are in the media directory `{media_dir}`. Use filenames as `src:` values relative to this directory.
19
-
20
- **A. Media selection:**
21
- - 1-4 clips for this scene. Use imaging for photos, videos for clips. See `startFrom`/`endAt` for trimming.
22
- - Image: `- image src:{filename} duration:{s} start:{s}`
23
- - Video: `- video src:{filename} startFrom:{trim_start} endAt:{trim_end} start:{s}`
24
- - First clip starts at `start:0`. Subsequent clips start at the cumulative previous duration.
25
-
26
- **B. Narration:**
27
- - One `subtitle script:"..."` node per scene. Duration matches total scene length.
28
- - First-person, conversational, matching creator profile.
29
- - Every word grounded in clip captions, user labels, or GPS. No fabrication.
30
- - Length: 10-40 words (~3-15 seconds at 2.5 w/s).
31
- - No parentheses, no ellipses. At most one emoji.
32
-
33
- Output format for ONE scene:
34
-
35
- ```
36
- ## <SceneTitle (PascalCase)>
37
- layout:parallel
38
- - image src:<filename> duration:<s> start:<s>
39
- - video src:<filename> startFrom:<s> endAt:<s> start:<s>
40
- - subtitle script:"<narration line>" duration:<total_s>
41
- ```
@@ -1,13 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { parseArgs } from "./cli.mjs";
3
-
4
- describe("parseArgs", () => {
5
- it("supports render without an aspect flag", () => {
6
- const args = parseArgs(["node", "markcut", "render", "input.md", "--output", "out/video.mp4"]);
7
-
8
- expect(args.command).toBe("render");
9
- expect(args.file).toBe("input.md");
10
- expect(args.output).toBe("out/video.mp4");
11
- expect(args).not.toHaveProperty("aspect");
12
- });
13
- });