reelforge 1.20.1 → 1.20.2

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.
@@ -154,8 +154,6 @@ function optsToBody(opts) {
154
154
  out.asr_model = opts.asrModel;
155
155
  if (opts.imageModel !== undefined)
156
156
  out.image_model = opts.imageModel;
157
- if (opts.promptPrefix !== undefined)
158
- out.prompt_prefix = opts.promptPrefix;
159
157
  if (opts.style !== undefined)
160
158
  out.style = opts.style;
161
159
  if (opts.characterRef !== undefined)
@@ -168,8 +166,6 @@ function optsToBody(opts) {
168
166
  out.video_fps = opts.videoFps;
169
167
  if (opts.quality !== undefined)
170
168
  out.quality = opts.quality;
171
- if (opts.crf !== undefined && Number.isFinite(opts.crf))
172
- out.crf = opts.crf;
173
169
  if (opts.videoBitrate !== undefined)
174
170
  out.video_bitrate = opts.videoBitrate;
175
171
  if (opts.motion !== undefined)
@@ -188,10 +184,6 @@ function optsToBody(opts) {
188
184
  out.bgm_volume = opts.bgmVolume;
189
185
  if (opts.subtitleStyle !== undefined)
190
186
  out.subtitle_style = opts.subtitleStyle;
191
- if (opts.subtitleColor !== undefined)
192
- out.subtitle_color = opts.subtitleColor;
193
- if (opts.subtitleBackground !== undefined)
194
- out.subtitle_background = opts.subtitleBackground;
195
187
  if (opts.subtitleBottom !== undefined && Number.isFinite(opts.subtitleBottom))
196
188
  out.subtitle_bottom_px = opts.subtitleBottom;
197
189
  if (opts.profile !== undefined && opts.profile.trim())
@@ -230,10 +222,6 @@ function optsToBody(opts) {
230
222
  cover.base = opts.coverBase;
231
223
  if (Object.keys(cover).length > 0)
232
224
  out.cover = cover;
233
- if (opts.segmentMinChars !== undefined)
234
- out.segment_min_chars = opts.segmentMinChars;
235
- if (opts.segmentMaxChars !== undefined)
236
- out.segment_max_chars = opts.segmentMaxChars;
237
225
  if (opts.previewOnly)
238
226
  out.preview_only = true;
239
227
  return out;
@@ -283,7 +271,6 @@ export function registerCreate(program) {
283
271
  .option("-d, --duration <sec>", "target video duration in seconds (generate mode only; default 45). LLM aims for ~duration × 5 chars of narration.", (v) => parseInt(v, 10))
284
272
  .option("-p, --pace <pace>", "visual rhythm hint passed to the LLM: slow | normal | fast (default normal). LLM still decides the actual scene count from semantic structure.")
285
273
  .option("--image-model <id>", "image model (rx-image-z | rx-image-flux | rx-image-qwen | rx-image-qwen-edit). Auto-switches to the edit-capable model when --character-ref is set.")
286
- .option("--prompt-prefix <text>", "raw style prefix prepended to every image prompt (overrides --style)")
287
274
  .option("--style <preset>", "image style preset id — server-expanded. 用户不知道选哪个时,agent 应该先跑 `rf styles list --json` 把每个风格的 preview_url(同一灯塔在 17 种风格下的对比图)给用户看,让用户照图选。仅看 id 列表用户和你都猜不准实际出图长啥样")
288
275
  .option("--character-ref <urlOrPath>", "reference image of the main character — locks identity across scenes. URL, data: URI, or local png/jpg/webp path (auto-encoded). Auto-enables the edit-capable image model.")
289
276
  .option("--motion <preset>", "per-scene image animation intensity. See 'Motion presets' below. Default: lite.")
@@ -294,8 +281,6 @@ export function registerCreate(program) {
294
281
  .option("--bgm-volume <0..1>", "BGM mix volume (0=silent, 1=full). Default 0.15 keeps narration intelligible.", (v) => Number(v))
295
282
  .option("--no-bgm", "disable background music for this render")
296
283
  .option("--subtitle-style <preset>", "subtitle visual style. See 'Subtitle styles' below. Default: plate.")
297
- .option("--subtitle-color <css>", "override subtitle text color, e.g. '#ffeb3b'. Omit for preset default.")
298
- .option("--subtitle-background <css>", "override plate-preset background, e.g. 'rgba(20,30,80,0.75)'. Other presets ignore.")
299
284
  .option("--subtitle-bottom <px>", "override the subtitle bottom offset in px (default 400, the lower-third position). blur-bg/letterbox images move up to clear it.", (v) => parseInt(v, 10))
300
285
  .option("--profile <id>", "视频的「场景」(垂类):plain(默认,纯 AI 图,无组件)| finance(财经/金融,数据组件 + 鎏金深蓝)| mindset(财商认知,认知组件 + 暖纸黏土)| general(通用组件,中性皮)。选了 profile 即带出它的组件、配色、配图风、封面与字幕默认,可被其他 flag 覆盖。")
301
286
  .option("--subtitle-translate <lang>", "双语字幕:把每条字幕翻译成指定语言,以小一号文字显示在主字幕下方,如 'en'(英文)/ 'ja'(日文)。开启后字幕分段自动变短(主字幕保持单行)。默认:开(en);传 'off' 关闭(也可覆盖 recipe 设置)")
@@ -317,12 +302,9 @@ export function registerCreate(program) {
317
302
  .option("--llm-model <id>", "override the LLM model used for scene-plan")
318
303
  .option("--tts-model <id>", "override the TTS model (defaults to the server's)")
319
304
  .option("--asr-model <id>", "override the ASR model (defaults to the server's)")
320
- .option("--segment-min-chars <N>", "subtitle SEGMENT (分段) min chars (default 10). A segment is one on-screen subtitle unit, not a visual line — visual wrapping is automatic.", (v) => parseInt(v, 10))
321
- .option("--segment-max-chars <N>", "subtitle SEGMENT (分段) max chars (default 28 ≈ 2 visual lines at 820px safe width). HTML clamps display to 2 lines + ellipsis.", (v) => parseInt(v, 10))
322
305
  .option("--video-fps <n>", "output video fps (default 24 — cinema-standard, ~20% faster render vs 30; pass 30 if you want smoother motion)", (v) => parseInt(v, 10))
323
- .option("--quality <preset>", "encoder quality preset: draft | standard (default) | high. draft shrinks output ~3-4× vs standard (~3 Mbps) at slight visible quality cost; high is the opposite. Mutually exclusive with --crf and --video-bitrate.")
324
- .option("--crf <N>", "constant rate factor 0-51 (lower = higher quality). Bypasses --quality preset's bitrate choice. Mutually exclusive with --video-bitrate.", (v) => parseInt(v, 10))
325
- .option("--video-bitrate <rate>", "目标视频码率,如 '750k' / '1M' / '2M'。用于命中文件大小预算。和 --crf 二选一。")
306
+ .option("--quality <preset>", "encoder quality preset: draft | standard (default) | high. draft shrinks output ~3-4× vs standard (~3 Mbps); high is the opposite. Mutually exclusive with --video-bitrate.")
307
+ .option("--video-bitrate <rate>", "目标视频码率,如 '750k' / '1M' / '2M'。用于命中文件大小预算。")
326
308
  .option("--recipe <file>", "load defaults from a JSON recipe file (CLI flags still override)")
327
309
  .option("--redo", "replay last successful create from ~/.reelforge/last-create.json")
328
310
  .option("--dry-run", "print the final request body + estimated units; do NOT submit")
@@ -385,8 +367,6 @@ export function registerCreate(program) {
385
367
  " plate semi-transparent black plate + white text (CapCut default; safest readability)",
386
368
  " stroke bold white text with black stroke + shadow, no plate (抖音网红风)",
387
369
  " cinema bottom black gradient backdrop + lighter text (film / documentary look)",
388
- " · use --subtitle-color / --subtitle-background to override the preset's colors",
389
- " e.g. --subtitle-color '#ffeb3b' --subtitle-background 'rgba(20,30,80,0.75)'",
390
370
  "",
391
371
  "Brand chrome (--brand-* flags or config.video.default_brand):",
392
372
  " Adds a constant @handle / slogan / logo block in a frame corner.",
@@ -402,8 +382,7 @@ export function registerCreate(program) {
402
382
  "",
403
383
  "Image style presets (--style <preset>) — server expands id → prompt prefix:",
404
384
  formatStylePresetsList(),
405
- " · Pass --prompt-prefix to override with a custom string (always wins).",
406
- " · Omit both to let the LLM pick a per-video style automatically.",
385
+ " · Omit --style to let the LLM pick a per-video style automatically.",
407
386
  " · Run `rf styles list` to query the server's live catalog.",
408
387
  "",
409
388
  "Output behavior:",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reelforge",
3
- "version": "1.20.1",
3
+ "version": "1.20.2",
4
4
  "description": "AI 视频生成 CLI。一句话主题或自己的脚本 → 自动出抖音/TikTok/视频号竖屏 MP4。安装即用:`reelforge` 或短别名 `rf`。",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",