linyq 6d8cc671ab fix(logging): 注释掉调试信息的日志输出,优化日志记录
在clip_video.py和merger_video.py中,注释掉了成功处理视频的日志信息,以减少调试时的冗余输出。同时,在manager.py中更新了提示词渲染成功的日志格式,确保版本信息的清晰展示。这些更改旨在提升日志的可读性和有效性,优化调试过程。
2025-07-12 02:27:51 +08:00

237 lines
9.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project: NarratoAI
@File : script_generation.py
@Author : viccy同学
@Date : 2025/1/7
@Description: 短剧解说脚本生成提示词 - 优化版本
"""
from ..base import ParameterizedPrompt, PromptMetadata, ModelType, OutputFormat
class ScriptGenerationPrompt(ParameterizedPrompt):
"""短剧解说脚本生成提示词 - 优化版本"""
def __init__(self):
metadata = PromptMetadata(
name="script_generation",
category="short_drama_narration",
version="v2.0",
description="基于短剧解说创作核心要素,生成高质量解说脚本,包含黄金开场、爽点放大、个性吐槽等专业技巧",
model_type=ModelType.TEXT,
output_format=OutputFormat.JSON,
tags=["短剧", "解说脚本", "文案生成", "原声片段", "黄金开场", "爽点放大", "个性吐槽", "悬念预埋"],
parameters=["drama_name", "plot_analysis", "subtitle_content"]
)
super().__init__(metadata, required_parameters=["drama_name", "plot_analysis"])
self._system_prompt = "你是一位顶级的短剧解说up主精通短视频创作的所有核心技巧。你必须严格按照JSON格式输出绝不能包含任何其他文字、说明或代码块标记。"
def get_template(self) -> str:
return """# 短剧解说脚本创作任务
## 任务目标
我是一位专业的短剧解说up主需要为短剧《${drama_name}》创作一份高质量的解说脚本。目标是让观众在短时间内了解剧情精华,并产生强烈的继续观看欲望。
## 素材信息
### 剧情概述
<plot>
${plot_analysis}
</plot>
### 原始字幕(含精确时间戳)
<subtitles>
${subtitle_content}
</subtitles>
## 短剧解说创作核心要素
### 1. 黄金开场3秒法则
**开头3秒内必须制造强烈钩子激发"想知道后续发展"的强烈好奇心**
- **悬念设置**:直接抛出最核心的冲突或疑问
- **冲突展示**:展现最激烈的对立关系
- **情感共鸣**:触及观众内心的普遍情感
- **反转预告**:暗示即将发生的惊人转折
### 2. 主线提炼(去繁就简)
**快节奏解说,速度超越原剧,专注核心主线**
- 舍弃次要情节和配角,只保留推动主线的关键人物
- 突出核心矛盾冲突,每个片段都要推进主要故事线
- 快速跳过铺垫,直击剧情要害
- 确保每个解说片段都有明确的剧情推进作用
### 3. 爽点放大(情绪引爆)
**精准识别剧中"爽点"并用富有感染力的语言放大**
- **主角逆袭**:突出弱者变强、反败为胜的瞬间
- **反派被打脸**:强调恶人得到报应的痛快感
- **智商在线**:赞美角色的机智和策略
- **情感爆发**:放大感人、愤怒、震撼等强烈情绪
- 使用激昂语气和富有感染力的词汇调动观众情绪
### 4. 个性吐槽(增加趣味)
**以观众视角进行犀利点评,体现解说员独特人设**
- 避免单纯复述剧情,要有自己的观点和态度
- 开启"上帝视角"分析角色行为的合理性
- 适当吐槽剧情的套路或角色的愚蠢行为
- 用幽默、犀利的语言增加观看趣味
- 站在观众立场,说出观众想说的话
### 5. 悬念预埋(引导互动)
**在关键节点和结尾处"卖关子",激发互动欲望**
- 在剧情高潮前停止,留下"接下来会发生什么"的疑问
- 提出引导性问题:"你们觉得他会怎么做?"
- 预告后续精彩:"更劲爆的还在后面"
- 为后续内容预热,激发评论、点赞、关注
### 6. 卡点配合(视听协调)
**考虑文案与画面、音乐的完美结合**
- 在情感高潮处预设BGM卡点
- 解说节奏要配合画面节奏
- 重要台词处保留原声,解说适时停顿
- 追求文案+画面+音乐的协同效应
## 严格技术要求
### 时间戳管理(绝对不能违反)
- **时间戳绝对不能重叠**,确保剪辑后无重复画面
- **时间段必须连续且不交叉**,严格按时间顺序排列
- **每个时间戳都必须在原始字幕中找到对应范围**
- 可以拆分原时间片段,但必须保持时间连续性
- 时间戳的格式必须与原始字幕中的格式完全一致
### 时长控制1/3原则
- **解说视频总长度 = 原视频长度的 1/3**
- 精确控制节奏和密度,既不能过短也不能过长
- 合理分配解说和原声的时间比例
### 剧情连贯性
- **保持故事逻辑完整**,确保情节发展自然流畅
- **严格按照时间顺序**,禁止跳跃式叙述
- **符合因果逻辑**先发生A再发生BA导致B
## 原声片段使用规范
### 原声片段格式要求
原声片段必须严格按照以下JSON格式
```json
{
"_id": 序号,
"timestamp": "开始时间-结束时间",
"picture": "画面内容描述",
"narration": "播放原片+序号",
"OST": 1
}
```
### 原声片段插入策略
#### 1. 关键情绪爆发点
**在角色强烈情绪表达时必须保留原声**
- **愤怒爆发**:角色愤怒咆哮、情绪失控的瞬间
- **感动落泪**:角色感动哭泣、情感宣泄的时刻
- **震惊反应**:角色震惊、不敢置信的表情和台词
- **绝望崩溃**:角色绝望、崩溃的情感表达
- **狂欢庆祝**:角色兴奋、狂欢的情绪高潮
#### 2. 重要对白时刻
**保留推动剧情发展的关键台词和对话**
- **身份揭露**:揭示角色真实身份的重要台词
- **真相大白**:揭晓谜底、真相的关键对话
- **情感告白**:爱情告白、情感表达的重要台词
- **威胁警告**:反派威胁、警告的重要对白
- **决定宣布**:角色做出重要决定的宣告
#### 3. 爽点瞬间
**在"爽点"时刻保留原声增强痛快感**
- **主角逆袭**:弱者反击、逆转局面的台词
- **反派被打脸**:恶人得到报应、被揭穿的瞬间
- **智商碾压**:主角展现智慧、碾压对手的台词
- **正义伸张**:正义得到伸张、恶有恶报的时刻
- **实力展现**:主角展现真实实力、震撼全场
#### 4. 悬念节点
**在制造悬念或揭晓答案的关键时刻保留原声**
- **悬念制造**:制造悬念、留下疑问的台词
- **答案揭晓**:揭晓答案、解开谜团的对话
- **转折预告**:暗示即将发生转折的重要台词
- **危机降临**:危机来临、紧张时刻的对白
### 原声片段技术规范
#### 格式规范
- **OST字段**设置为1表示保留原声解说片段设置为0
- **narration格式**:严格使用"播放原片+序号"(如"播放原片26"
- **picture字段**:详细描述画面内容,便于后期剪辑参考
- **时间戳精度**:必须与字幕中的重要对白时间精确匹配
#### 比例控制
- **原声与解说比例**3:7原声30%解说70%
- **分布均匀**:原声片段要在整个视频中均匀分布
- **长度适中**单个原声片段时长控制在3-8秒
- **衔接自然**:原声片段与解说片段之间衔接自然流畅
#### 选择原则
- **情感优先**:优先选择情感强烈的台词和对话
- **剧情关键**:必须是推动剧情发展的重要内容
- **观众共鸣**:选择能引起观众共鸣的经典台词
- **视听效果**:考虑台词的声音效果和表演张力
## 输出格式要求
请严格按照以下JSON格式输出绝不添加任何其他文字、说明或代码块标记
{
"items": [
{
"_id": 1,
"timestamp": "00:00:01,000-00:00:05,500",
"picture": "女主角林小雨慌张地道歉,男主角沈墨轩冷漠地看着她",
"narration": "一个普通女孩的命运即将因为一杯咖啡彻底改变!她撞到的这个男人,竟然是...",
"OST": 0
},
{
"_id": 2,
"timestamp": "00:00:05,500-00:00:08,000",
"picture": "沈墨轩质问林小雨,语气冷厉威严",
"narration": "播放原片2",
"OST": 1
},
{
"_id": 3,
"timestamp": "00:00:08,000-00:00:12,000",
"picture": "林小雨惊慌失措,沈墨轩眼中闪过一丝兴趣",
"narration": "霸道总裁的经典开场!一杯咖啡引发的爱情故事就这样开始了...",
"OST": 0
}
]
}
## 质量标准
### 解说文案要求:
- **字数控制**每段解说文案80-150字
- **语言风格**:生动有趣,富有感染力,符合短视频观众喜好
- **情感调动**:能够有效调动观众情绪,产生代入感
- **节奏把控**:快节奏但不失条理,紧凑但不混乱
### 技术规范:
- **解说与原片比例**7:3解说70%原片30%
- **原声片段标识**OST=1表示原声OST=0表示解说
- **原声格式规范**narration字段必须使用"播放原片+序号"格式
- **关键情绪点**:必须保留原片原声,增强观众代入感
- **时间戳精度**:精确到毫秒级别,确保与字幕完美匹配
- **逻辑连贯性**:严格遵循剧情发展顺序
### 创作原则:
1. **只输出JSON内容**,不要任何说明性文字
2. **严格基于提供的剧情和字幕**,不虚构内容
3. **突出核心冲突**,舍弃无关细节
4. **强化观众体验**,始终考虑观看感受
5. **保持专业水准**体现解说up主的专业素养
现在请基于以上要求,为短剧《${drama_name}》创作解说脚本:"""