完成极速成品和脚本优化

This commit is contained in:
Azmat@qq.com
2026-08-25 11:13:07 +08:00
parent 00fc454db7
commit e2ec2d14af
46 changed files with 4734 additions and 432 deletions
+6 -2
View File
@@ -5,7 +5,7 @@
*/
export type PresentationFormat = "oral" | "drama" | "vlog";
export type VideoStructure = "pain" | "contrast" | "review" | "scene";
export type VideoStructure = "pain" | "contrast" | "review" | "scene" | "promo" | "knowledge";
export const PRESENTATION_FORMATS: Record<PresentationFormat, string> = {
oral: "口播",
@@ -18,6 +18,8 @@ export const VIDEO_STRUCTURES: Record<VideoStructure, string> = {
contrast: "前后对比",
review: "测评验证",
scene: "场景种草",
promo: "促销抢购",
knowledge: "知识分享",
};
export const PRESENTATION_KEYS = Object.keys(PRESENTATION_FORMATS) as PresentationFormat[];
@@ -55,6 +57,8 @@ export const STRUCTURE_HINT: Record<VideoStructure, string> = {
contrast: "用前后差距说话,视觉冲击最强",
review: "当场举证验证,适合高客单价",
scene: "把商品放进向往的场景里种草",
promo: "优惠机制清楚时,直接讲怎么买最划算",
knowledge: "先教用户怎么判断,再自然带出商品",
};
/** 唯一禁用组合:短剧 × 测评验证 —— 演出来的实测没有可信度。 */
@@ -83,7 +87,7 @@ export const DURATION_OPTIONS: number[] = Array.from(
/** 表现形式推荐的默认总时长:口播短平快 / 短剧要装下三幕 / Vlog 要铺氛围。 */
const FORMAT_DEFAULT_DURATION: Record<PresentationFormat, number> = { oral: 30, drama: 45, vlog: 30 };
/** 各结构能压到的最短总时长 —— 低于它证据或氛围就不成立了。须落在 15 秒步进上。 */
const STRUCTURE_MIN_DURATION: Record<VideoStructure, number> = { pain: 15, contrast: 15, review: 30, scene: 30 };
const STRUCTURE_MIN_DURATION: Record<VideoStructure, number> = { pain: 15, contrast: 15, review: 30, scene: 30, promo: 15, knowledge: 30 };
export function recommendDuration(format: PresentationFormat, structure: VideoStructure): number {
return Math.max(FORMAT_DEFAULT_DURATION[format], STRUCTURE_MIN_DURATION[structure]);