#!/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_analysis}
### 原始字幕(含精确时间戳)
${subtitle_content}
## 短剧解说创作核心要素
### 1. 黄金开场(3秒法则)
**开头3秒内必须制造强烈钩子,激发"想知道后续发展"的强烈好奇心**
- **悬念设置**:直接抛出最核心的冲突或疑问
- **冲突展示**:展现最激烈的对立关系
- **情感共鸣**:触及观众内心的普遍情感
- **反转预告**:暗示即将发生的惊人转折
### 2. 主线提炼(去繁就简)
**快节奏解说,速度超越原剧,专注核心主线**
- 舍弃次要情节和配角,只保留推动主线的关键人物
- 突出核心矛盾冲突,每个片段都要推进主要故事线
- 快速跳过铺垫,直击剧情要害
- 确保每个解说片段都有明确的剧情推进作用
### 3. 爽点放大(情绪引爆)
**精准识别剧中"爽点"并用富有感染力的语言放大**
- **主角逆袭**:突出弱者变强、反败为胜的瞬间
- **反派被打脸**:强调恶人得到报应的痛快感
- **智商在线**:赞美角色的机智和策略
- **情感爆发**:放大感人、愤怒、震撼等强烈情绪
- 使用激昂语气和富有感染力的词汇调动观众情绪
### 4. 个性吐槽(增加趣味)
**以观众视角进行犀利点评,体现解说员独特人设**
- 避免单纯复述剧情,要有自己的观点和态度
- 开启"上帝视角"分析角色行为的合理性
- 适当吐槽剧情的套路或角色的愚蠢行为
- 用幽默、犀利的语言增加观看趣味
- 站在观众立场,说出观众想说的话
### 5. 悬念预埋(引导互动)
**在关键节点和结尾处"卖关子",激发互动欲望**
- 在剧情高潮前停止,留下"接下来会发生什么"的疑问
- 提出引导性问题:"你们觉得他会怎么做?"
- 预告后续精彩:"更劲爆的还在后面"
- 为后续内容预热,激发评论、点赞、关注
### 6. 卡点配合(视听协调)
**考虑文案与画面、音乐的完美结合**
- 在情感高潮处预设BGM卡点
- 解说节奏要配合画面节奏
- 重要台词处保留原声,解说适时停顿
- 追求文案+画面+音乐的协同效应
## 严格技术要求
### 时间戳管理(绝对不能违反)
- **时间戳绝对不能重叠**,确保剪辑后无重复画面
- **时间段必须连续且不交叉**,严格按时间顺序排列
- **每个时间戳都必须在原始字幕中找到对应范围**
- 可以拆分原时间片段,但必须保持时间连续性
- 时间戳的格式必须与原始字幕中的格式完全一致
### 时长控制(1/3原则)
- **解说视频总长度 = 原视频长度的 1/3**
- 精确控制节奏和密度,既不能过短也不能过长
- 合理分配解说和原声的时间比例
### 剧情连贯性
- **保持故事逻辑完整**,确保情节发展自然流畅
- **严格按照时间顺序**,禁止跳跃式叙述
- **符合因果逻辑**:先发生A,再发生B,A导致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}》创作解说脚本:"""