@lingjingai/scriptctl 0.41.0 → 0.43.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.
Files changed (75) hide show
  1. package/changes/0.42.0.md +14 -0
  2. package/changes/0.43.0.md +21 -0
  3. package/dist/cli.js +0 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/domain/ingest/serial-context.d.ts +1 -1
  6. package/dist/domain/ingest/serial-context.js +1 -1
  7. package/dist/domain/ingest/serial-context.js.map +1 -1
  8. package/dist/domain/ingest/video-apply.d.ts +0 -33
  9. package/dist/domain/ingest/video-apply.js +8 -159
  10. package/dist/domain/ingest/video-apply.js.map +1 -1
  11. package/dist/domain/ingest/video-context.d.ts +51 -0
  12. package/dist/domain/ingest/video-context.js +293 -0
  13. package/dist/domain/ingest/video-context.js.map +1 -0
  14. package/dist/domain/ingest/video-serial-md.d.ts +60 -0
  15. package/dist/domain/ingest/video-serial-md.js +277 -0
  16. package/dist/domain/ingest/video-serial-md.js.map +1 -0
  17. package/dist/help-text.js +13 -10
  18. package/dist/help-text.js.map +1 -1
  19. package/dist/infra/ingest/video-transcode.d.ts +7 -0
  20. package/dist/infra/ingest/video-transcode.js +86 -0
  21. package/dist/infra/ingest/video-transcode.js.map +1 -0
  22. package/dist/infra/llm/gemini-video-model.js +14 -2
  23. package/dist/infra/llm/gemini-video-model.js.map +1 -1
  24. package/dist/llm/config.js +1 -2
  25. package/dist/llm/config.js.map +1 -1
  26. package/dist/llm/registry.d.ts +1 -7
  27. package/dist/llm/registry.js +9 -17
  28. package/dist/llm/registry.js.map +1 -1
  29. package/dist/llm/tasks/ingest/episode-assets.js +7 -5
  30. package/dist/llm/tasks/ingest/episode-assets.js.map +1 -1
  31. package/dist/llm/tasks/ingest/video-serial.d.ts +9 -0
  32. package/dist/llm/tasks/ingest/video-serial.js +120 -0
  33. package/dist/llm/tasks/ingest/video-serial.js.map +1 -0
  34. package/dist/llm/types.d.ts +1 -1
  35. package/dist/llm/types.js.map +1 -1
  36. package/dist/usecases/ingest/command.js +0 -3
  37. package/dist/usecases/ingest/command.js.map +1 -1
  38. package/dist/usecases/ingest/pipeline.js +6 -1
  39. package/dist/usecases/ingest/pipeline.js.map +1 -1
  40. package/dist/usecases/ingest/serial-govern.d.ts +1 -0
  41. package/dist/usecases/ingest/serial-govern.js +46 -6
  42. package/dist/usecases/ingest/serial-govern.js.map +1 -1
  43. package/dist/usecases/ingest/status.js +8 -20
  44. package/dist/usecases/ingest/status.js.map +1 -1
  45. package/dist/usecases/ingest/video-pipeline.d.ts +0 -6
  46. package/dist/usecases/ingest/video-pipeline.js +145 -127
  47. package/dist/usecases/ingest/video-pipeline.js.map +1 -1
  48. package/dist/usecases/ingest/view-server.d.ts +11 -0
  49. package/dist/usecases/ingest/view-server.js +89 -12
  50. package/dist/usecases/ingest/view-server.js.map +1 -1
  51. package/package.json +1 -1
  52. package/dist/domain/ingest/video-aggregate.d.ts +0 -23
  53. package/dist/domain/ingest/video-aggregate.js +0 -89
  54. package/dist/domain/ingest/video-aggregate.js.map +0 -1
  55. package/dist/domain/ingest/video-md-parser.d.ts +0 -2
  56. package/dist/domain/ingest/video-md-parser.js +0 -233
  57. package/dist/domain/ingest/video-md-parser.js.map +0 -1
  58. package/dist/llm/tasks/ingest/plot-speaker.d.ts +0 -11
  59. package/dist/llm/tasks/ingest/plot-speaker.js +0 -72
  60. package/dist/llm/tasks/ingest/plot-speaker.js.map +0 -1
  61. package/dist/llm/tasks/ingest/roster-merge.d.ts +0 -46
  62. package/dist/llm/tasks/ingest/roster-merge.js +0 -235
  63. package/dist/llm/tasks/ingest/roster-merge.js.map +0 -1
  64. package/dist/llm/tasks/ingest/state-merge.d.ts +0 -10
  65. package/dist/llm/tasks/ingest/state-merge.js +0 -84
  66. package/dist/llm/tasks/ingest/state-merge.js.map +0 -1
  67. package/dist/llm/tasks/ingest/video-correct.d.ts +0 -30
  68. package/dist/llm/tasks/ingest/video-correct.js +0 -144
  69. package/dist/llm/tasks/ingest/video-correct.js.map +0 -1
  70. package/dist/llm/tasks/ingest/video-transcribe.d.ts +0 -4
  71. package/dist/llm/tasks/ingest/video-transcribe.js +0 -105
  72. package/dist/llm/tasks/ingest/video-transcribe.js.map +0 -1
  73. package/dist/usecases/ingest/video-pass3.d.ts +0 -26
  74. package/dist/usecases/ingest/video-pass3.js +0 -0
  75. package/dist/usecases/ingest/video-pass3.js.map +0 -1
@@ -1,105 +0,0 @@
1
- // ingest.video-transcribe task (§10.2 pass1). Gemini turns one episode video
2
- // into a high-fidelity screenplay markdown: `## 梗概`, then `# 剧本` (scenes with
3
- // sub-second [MM:SS.sss] timestamps + typed-speaker anchors), then `# 资产` (a
4
- // character roster carrying cross-episode visual anchors/role — the evidence the
5
- // merge layer needs). Built on the text MARKDOWN spec, extended with timestamps
6
- // and per-character anchors. The upload/reuse of the media file is orchestrated
7
- // by the pipeline (a handle is passed in); this task only generates.
8
- import { CliError, EXIT_RUNTIME } from "../../../common.js";
9
- export const VIDEO_TRANSCRIBE_SYSTEM = "你是短剧视频转剧本的分析器。输入是一整集短剧视频(竖屏、1-2 分钟)。" +
10
- "你的任务是把这一集**逐镜头、高保真**地转写成一份 markdown 剧本流文档,供转绘 agent 后续出图使用。" +
11
- "核心要求:不漏镜头、动作/对白/实体准确、不脑补、时间戳对齐画面。";
12
- export function buildTranscribeUser(episodeNo) {
13
- return `把这一集(第 ${episodeNo} 集)视频转成一份 markdown 剧本流文档。
14
-
15
- Output format: 一份 markdown 文档。顺序固定:先 \`## 梗概\`,再 \`# 剧本\`,再 \`# 资产\`。
16
- 不要用 \`\`\` 代码块包裹,不要在文档前后加任何解释性文字。
17
-
18
- ## 梗概
19
- <按发生顺序概括本集剧情,200-300 字,纯文本,不用 markdown 结构语法>
20
-
21
- # 剧本
22
-
23
- ## 场景 1
24
- - 时空: <内|外> <日|夜>
25
- - 时间: <MM:SS.sss-MM:SS.sss,本场在视频中的起止时间>
26
- - 地点: <稳定主空间地点名>
27
- - 角色: <单人角色1>(状态), <角色2>(状态) ← 状态=整套着装造型,如 (黑色西装)
28
- - 道具: <需保持一致的道具1>, <道具2>
29
-
30
- > [act] [MM:SS.sss] 动作或环境描写(逐镜头,含镜头景别)。**只写画面里发生的动作/环境,绝不把台词字幕抄进来**——短剧每句话底部那条对白字幕是冗余的,属于对应的 [dlg],act 里一个字都不要出现(详见「画面字幕的取舍」铁律)。
31
- > [dlg|name] [MM:SS.sss] 角色对白(以口型/音轨为准)。
32
- > [dlg|name|emotion] [MM:SS.sss] 带情绪标签的对白。
33
- > [dlg|broadcast:名] [MM:SS.sss] 广播/画外音/主持人等非人物发声。
34
- > [think|name] [MM:SS.sss] 角色心声/内心独白(画外音但明确是某人所想)。
35
-
36
- ## 场景 2
37
- ...
38
-
39
- # 资产
40
-
41
- ## 人物
42
- 每个点名或反复出现的具体单人角色,用如下**多行**格式(这是本协议的重点,务必填全):
43
- - <角色名>
44
- 外观: <跨集恒定的身份长相:性别 + 年龄段 + 脸型五官 + 发型发色 + 体型身高 + 固定标记(痣/疤/眼镜/胡须)+ 气质。**不含服饰**,服饰属状态>
45
- 锚点: <最好认的 1-3 个视觉特征,一句话,用于在别的镜头里重新指认这个人。例:花白背头+金丝眼镜+国字脸>
46
- 声线: <音色/口音/说话方式,画外或未露脸时的辅助辨识。没有可写「未知」>
47
- 作用: <这个人在剧情里的身份与关系,例:男主 / 空降副总裁、男主对头 / 男主多年副手>
48
-
49
- ## 场景
50
- - <地点名>: <空间类型/规模/风格/主色调/光线/陈设>
51
-
52
- ## 道具
53
- - <道具名>: <类别/尺寸/材质/颜色/标志特征>
54
-
55
- ## 发声源
56
- - <发声源名>(broadcast|system|prop|location): <声音描述>
57
-
58
- ## 人物状态
59
- - <角色名>|<状态名>: <这个状态下的具体可视外观,只写稳定造型,不写动作/情绪/镜头>
60
-
61
- 规则:
62
- - 台词以人物**实际开口(口型/音轨)**为准。画面字幕可能是**谐音错字或译文**,与口型冲突时以口型为准,把你判断的正确人名/词写进对白正文即可。
63
- - **画面字幕的取舍(铁律,最容易犯错,务必照做)**:短剧几乎每句台词底部都压着一条对白字幕,它只是把角色**正在说的这句话**用文字又显示一遍——这类字幕是**对白的冗余复制,必须彻底丢弃**,只保留对应的 [dlg] 行即可,**绝对不要**在任何 act 里写「画面字幕:<某句话>」去复述台词。
64
- - 判据(每遇到一条画面文字都过一遍):这条字幕的内容,是不是差不多就是紧邻的某句台词(某个 [dlg]/[think])?——**是 ⇒ 直接删,act 里不留任何痕迹**;否 ⇒ 才可能保留。
65
- - 正例(该删):一句台词是「你少管闲事」,画面底部同时显示同样的字幕——只保留那条 [dlg|某人] 你少管闲事,**不要**再写一条 [act] 去注明「画面字幕:你少管闲事」。哪怕字幕和台词有一两个字出入(谐音/漏字),只要显然是同一句,也删。
66
- - 反例(该留,写进 act 并注明「画面字幕:xxx」):**不是任何人此刻在说的话**、承载对白之外新信息的画面文字,才留——人物介绍/身份头衔条、系统/UI 提示文字、时间地点交代(如「三年后」「上海·总部」)、旁白性说明、关键道具上的文字。判别关键:它是「谁正在开口说的台词」还是「画面上一段独立信息」?前者删,后者留。
67
- - **人物介绍/姓名头衔条例外**:它承载正式姓名这一新信息,既要写进 act,又要据它把对应角色命名为该正式姓名(见「角色命名」)。
68
- - 角色命名(重要):
69
- - **命名优先级:书面正式姓名 > 口头喊出的本名 > 纯描述名。** 三者按下面规则取最高可得的一档。
70
- - **画面给了书面正式姓名**(人物介绍条/姓名头衔卡/来电显示/工牌/名片/署名等,明确把一个正式姓名标注在某个人身上)→ **就用这个正式姓名当该角色的名**,哪怕全集里所有人只当面喊他职务/敬称(「X总」「X董」「老X」)。书面介绍条是剧方给出的权威身份,优先级高于旁人对他的称呼。判断这条介绍字幕是**压在哪个人身上**(谁的镜头/谁的位置),就把名安到那个人,并在后续该角色的所有 [dlg]/[think] 都用这个正式姓名,保持全集统一。
71
- - **听到本名**(对白里明确喊出的姓名)而没有书面姓名条 → 用听到的规范本名(不要用字幕同音近音的误写)。
72
- - **既没有书面姓名、也没听到本名** → 只能用**不含姓氏的纯描述名**:按身份或外貌,如「前上司」「下跪的男人」「黑衣女子」「湿发中年男」。并在 锚点 写清体貌,方便第二遍跨集对号。
73
- - **严禁凭空捏造带姓氏或像真名的称呼**:没有在视频里真实听到/看到「王总」「李董」「小许」这类称呼时,绝不能自己编一个安上去。捏造的带姓假名会被下游误当成真实人名,污染跨集归并(例:某集把没听到名字的角色随手叫「王总」,其实他是花名册里的别人,假姓一旦落地就很难纠)。宁可用「前上司」这种一眼可见是临时描述的名,也不要编「王总」。
74
- - 只有当某个「X总/X董/X姐」称呼是**视频里真实出现的**(有人这么叫他、或字幕这么写),才可以用。
75
- - \`## 人物\` 只登记具体单人角色;众人/群众/路人用 \`group:名\` 发声或写进 action,不进人物。
76
- - 状态=整套着装/发型/持续妆造等宏观造型档位,用描述性命名(金色礼服/深灰西装),不用「默认/常态」。情绪、姿态、临时脏污、普通便装不是状态。
77
- - action 正文逐镜头写实,不要合并镜头、不要脑补画面外信息。
78
- - 每个 [act]/[dlg]/[think] 都要带 [MM:SS.sss] 时间戳(毫秒三位,精确对齐该镜头/该句起始画面)。
79
-
80
- 现在开始输出这一集的完整 markdown 文档。`;
81
- }
82
- function transcribeError(message, received) {
83
- return new CliError("INGEST TRANSCRIBE FAILED", message, {
84
- exitCode: EXIT_RUNTIME,
85
- errorCode: "INGEST_TRANSCRIBE_FAILED",
86
- received,
87
- nextSteps: ["Inspect the episode error sidecar and rerun `scriptctl ingest`."],
88
- });
89
- }
90
- // Transcribe one already-uploaded episode video to markdown. A too-short result
91
- // is treated as a failed transcription (§12.3: empty responses do not retry).
92
- export async function runVideoTranscribe(port, file, episodeNo, fps, signal) {
93
- const response = await port.generate({
94
- file,
95
- system: VIDEO_TRANSCRIBE_SYSTEM,
96
- user: buildTranscribeUser(episodeNo),
97
- fps,
98
- ...(signal ? { signal } : {}),
99
- });
100
- const markdown = response.text.trim();
101
- if (markdown.length < 40)
102
- throw transcribeError(`episode ${episodeNo}: transcript too short`, [`length: ${markdown.length}`]);
103
- return markdown;
104
- }
105
- //# sourceMappingURL=video-transcribe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"video-transcribe.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/video-transcribe.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,8EAA8E;AAC9E,6EAA6E;AAC7E,iFAAiF;AACjF,gFAAgF;AAChF,gFAAgF;AAChF,qEAAqE;AAErE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG5D,MAAM,CAAC,MAAM,uBAAuB,GAClC,sCAAsC;IACtC,6DAA6D;IAC7D,mCAAmC,CAAC;AAEtC,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,UAAU,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAmEF,CAAC;AAC3B,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,QAAkB;IAC1D,OAAO,IAAI,QAAQ,CAAC,0BAA0B,EAAE,OAAO,EAAE;QACvD,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,0BAA0B;QACrC,QAAQ;QACR,SAAS,EAAE,CAAC,iEAAiE,CAAC;KAC/E,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAmB,EACnB,IAAqB,EACrB,SAAiB,EACjB,GAAW,EACX,MAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI;QACJ,MAAM,EAAE,uBAAuB;QAC/B,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC;QACpC,GAAG;QACH,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,eAAe,CAAC,WAAW,SAAS,wBAAwB,EAAE,CAAC,WAAW,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9H,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,26 +0,0 @@
1
- import { type ContextData } from "../../domain/ingest/video-aggregate.js";
2
- import type { VideoEpisodeDoc } from "../../domain/ingest/video-records.js";
3
- import type { LlmTaskExecutor } from "../../llm/types.js";
4
- export interface RosterMember {
5
- canonical: string;
6
- aliases: string[];
7
- episodes: number[];
8
- anchor: string;
9
- role: string;
10
- appearance: string;
11
- }
12
- export interface RosterResult {
13
- context: ContextData;
14
- contextMd: string;
15
- roster: RosterMember[];
16
- aliasToCanon: Record<string, string>;
17
- rosterStates: Record<string, Record<string, string>>;
18
- reviewMd: string;
19
- }
20
- interface Opts {
21
- executor: LlmTaskExecutor;
22
- concurrency?: number;
23
- signal?: AbortSignal;
24
- }
25
- export declare function runRosterMerge(docs: VideoEpisodeDoc[], opts: Opts): Promise<RosterResult>;
26
- export {};
Binary file
@@ -1 +0,0 @@
1
- {"version":3,"file":"video-pass3.js","sourceRoot":"","sources":["../../../src/usecases/ingest/video-pass3.ts"],"names":[],"mappings":"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"}