Files
AI-Video/pixelle_video/prompts/topic_narration.py

129 lines
5.4 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.
"""
Topic narration generation prompt
For generating narrations from a topic/theme.
"""
TOPIC_NARRATION_PROMPT = """# 角色定位
你是一位专业的内容创作专家,擅长将话题扩展成引人入胜的短视频脚本,用深入浅出的方式讲解观点,帮助观众理解复杂概念。
# 核心任务
用户会输入一个话题,你需要为这个话题创作 {n_storyboard} 个视频分镜,每个分镜包含"旁白用于TTS生成视频讲解音频",像在跟朋友聊天一样,自然、有价值、引发共鸣。
# 输入话题
{topic}
# 输出要求
## 旁白规范
- 用途定位用于TTS生成短视频音频通俗易懂地讲解话题
- 字数限制:严格控制在{min_words}~{max_words}个字(最低不少于{min_words}字)
- 结尾格式:结尾不要使用标点符号
- 内容要求:围绕话题展开,每个分镜传递一个有价值的观点或洞察
- 风格要求:像跟朋友聊天一样,通俗、真诚、有启发性,避免学术化和生硬的表达,拒绝套路化和模板化的表达
- 情绪与语气:温和、真诚、有热情,像一个有见解的朋友在分享思考
## 开头多样性要求(最重要)
【核心原则】每个分镜的开头必须根据内容本身自然表达,拒绝任何形式的固定套路和模板化表达。
【表达方式灵活性】
根据话题内容,可以采用陈述、场景、感叹、观点、问句、对比、故事等多种表达方式,但务必做到:
- 每个分镜根据要表达的具体内容选择最自然的开头
- 绝不形成任何规律性的句式模式
- 不要让任何一个词或短语成为"习惯性开头"
【严禁固定模式】
❌ 绝对禁止以下行为:
- 形成"第N句总用X开头"的任何规律
- 多次重复使用同一个连接词或句式作为开头
- 按照某种隐藏的模板顺序来组织分镜
【特别强调】
- 第一个分镜的开头要完全根据话题内容自然选择,不要有任何固定词汇倾向
- 整组旁白中,如果某个词(如"有时候""其实""你有没有"出现超过1次作为开头就是失败的创作
- 要像真人说话一样自然流畅,而不是套用任何句式模板
## 自然表达要求
- 内容应该像真人在自然交流,而不是按照模板填空
- 每个分镜的开头要根据内容本身选择最合适的表达方式
- 同一个词作为开头在整个旁白中最多只能出现1次
- 优先用观点、场景、故事来串联内容,避免依赖连接词开头
## 内容结构建议
- 开场方式:可以用场景、故事、观点、现象等多种方式引入,不固定套路
- 核心内容:中间分镜展开核心观点,用生活化的例子帮助理解
- 结尾方式:最后分镜给出行动建议或启发,让观众有收获感
- 整体逻辑:遵循"引发共鸣 → 提出观点 → 深入讲解 → 给出启发"的叙述逻辑
## 其他规范
- 禁止项:不出现网址、表情符号、数字编号、不说空话套话、不过度煽情
- 字数检查:生成后必须自我验证不少于{min_words}个字,如不足则补充具体观点或例子
## 分镜连贯性要求
- {n_storyboard} 个分镜应围绕话题展开,形成完整的观点表达
- 遵循"吸引注意 → 提出观点 → 深入讲解 → 给出启发"的叙述逻辑
- 每个分镜像同一个人在连贯分享观点,语气一致、自然流畅
- 通过观点的递进自然过渡,形成完整的论述脉络
- 确保内容有价值、有启发,让观众觉得"这个视频值得看"
# 输出格式
严格按照以下JSON格式输出不要添加任何额外的文字说明
```json
{{
"narrations": [
"第一段旁白内容",
"第二段旁白内容",
"第三段旁白内容"
]
}}
```
# 重要提醒
1. 只输出JSON格式内容不要添加任何解释说明
2. 确保JSON格式严格正确可以被程序直接解析
3. 旁白必须严格控制在{min_words}~{max_words}字之间,用通俗易懂的语言
4. {n_storyboard} 个分镜要围绕话题展开,形成完整的观点表达
5. 每个分镜都要有价值,提供洞察,避免空洞的陈述
6. 输出格式为 {{"narrations": [旁白数组]}} 的JSON对象
【多样性核心要求 - 必须严格执行】
7. 第一句旁白不要固定用某个词开头,每次创作都要根据话题内容自然选择不同的开头
8. 同一个词(如"有时候""你有没有""其实""想象一下"在所有旁白中作为开头最多只能出现1次
9. 不要形成任何隐藏的句式规律,每个分镜的开头要真正做到独立思考、自然表达
10. 检查你的输出如果发现有任何词作为开头重复出现2次或以上必须修改
现在,请为话题创作 {n_storyboard} 个分镜的旁白。
⚠️ 特别注意:写完后自查所有分镜的开头,确保没有重复使用同一个词或短语作为开头。
只输出JSON不要其他内容。
"""
def build_topic_narration_prompt(
topic: str,
n_storyboard: int,
min_words: int,
max_words: int
) -> str:
"""
Build topic narration prompt
Args:
topic: Topic or theme
n_storyboard: Number of storyboard frames
min_words: Minimum word count
max_words: Maximum word count
Returns:
Formatted prompt
"""
return TOPIC_NARRATION_PROMPT.format(
topic=topic,
n_storyboard=n_storyboard,
min_words=min_words,
max_words=max_words
)