#!/usr/bin/env python # -*- coding: UTF-8 -*- """ @Project: 短剧混剪-画面匹配 @File : plot_extraction.py @Author : viccy同学 @Date : 2025/1/7 @Description: 短剧爆点提取提示词 - 优化版本v2.0 """ from ..base import TextPrompt, PromptMetadata, ModelType, OutputFormat class PlotExtractionPrompt(TextPrompt): """短剧爆点提取提示词 - 优化版本""" def __init__(self): metadata = PromptMetadata( name="plot_extraction", category="short_drama_editing", version="v2.0", description="根据剧情梗概和字幕内容,精确定位关键剧情的时间段,确保片段连贯可剪辑", model_type=ModelType.TEXT, output_format=OutputFormat.JSON, tags=["短剧", "爆点定位", "时间戳", "剧情提取", "连贯性", "过渡片段"], parameters=["subtitle_content", "plot_summary", "plot_titles"] ) super().__init__(metadata) self._system_prompt = "你是一名专业短剧剪辑师,精通视频叙事节奏和剧情连贯性,擅长选择能够流畅衔接的视频片段。" def get_template(self) -> str: return """# 短剧混剪时间段定位任务 ## 任务目标 为每个关键情节点精确定位时间段,确保最终剪辑出的视频**剧情连贯、逻辑清晰**。 ## 输入信息 ### 剧情梗概 ${plot_summary} ### 需要定位的情节点(按剧情发展顺序) ${plot_titles} ### 完整字幕内容 ${subtitle_content} ## 时间段选择原则 ### 1. 连贯性原则(最重要) **目标:观众看完剪辑后能理解完整故事** - **包含必要上下文**:每个片段要包含理解该情节所需的前置信息 - **自然的开始点**:片段开头应该是一个自然的场景切入点 - **完整的结束点**:片段结尾应该是一个自然的收尾或转折点 - **衔接考虑**:考虑与前后片段的衔接是否流畅 ### 2. 时间段技术规范(绝对不能违反) **时间戳规则**: - 格式必须为:`xx:xx:xx,xxx-xx:xx:xx,xxx` - 必须与字幕中的时间戳精确匹配 - **严禁时间段重叠**:任意两个片段的时间不能有交集 - **严格按时间顺序**:后一个片段的开始时间必须大于前一个片段的结束时间 **时长控制**: - 单个片段建议时长:10-60秒 - 过短(<5秒):信息不完整,观众无法理解 - 过长(>90秒):节奏拖沓,失去混剪意义 ### 3. 内容完整性原则 每个片段必须包含: - **情节的起因**:为什么会发生这件事 - **情节的经过**:具体发生了什么 - **情节的结果/转折**:导致了什么后果 ### 4. 过渡片段策略 如果两个关键情节之间跳跃太大,需要: - 适当延长前一个片段的结尾 - 或适当提前后一个片段的开始 - 确保观众能理解剧情是如何发展到下一个阶段的 ## 输出格式 请严格按照以下JSON格式输出: { "plot_points": [ { "sequence": 1, "timestamp": "00:01:23,456-00:02:15,789", "title": "情节标题", "narrative_function": "开端/发展/高潮/结局", "picture": "详细的画面和剧情描述,包括:场景环境、人物状态、关键对话、动作行为、情感表现", "context_before": "这个片段之前发生了什么(简述)", "context_after": "这个片段之后会发生什么(简述)", "transition_note": "与下一个片段的衔接说明" } ], "editing_notes": { "total_duration": "所有片段的总时长估算", "pacing_suggestion": "节奏建议(如:开头可稍慢,高潮处加快)", "potential_gaps": ["可能存在的剧情跳跃点及建议处理方式"] } } ## 质量检查清单 输出前请逐项检查: **时间戳检查**: - [ ] 所有时间戳都存在于原始字幕中 - [ ] 时间段之间没有重叠 - [ ] 时间段按顺序排列(后一个开始 > 前一个结束) **连贯性检查**: - [ ] 第一个片段是否交代了必要的背景? - [ ] 相邻片段之间的剧情跳跃是否可以理解? - [ ] 最后一个片段是否给出了某种结局或悬念? **完整性检查**: - [ ] 每个片段是否包含完整的小情节(起因-经过-结果)? - [ ] 观众只看这些片段能否理解整个故事的主线? ## 重要限制 1. **严禁虚构时间戳**:所有时间必须来自字幕 2. **严禁时间重叠**:这会导致剪辑出现重复画面 3. **严禁打乱顺序**:必须按剧情发展的时间线排列 4. **只输出JSON**:不要添加任何说明文字"""