| name | hit-script-retrieval-skill |
| description | 爆款剧本检索技能。使用混合搜索(语义+关键词)检索最相关的爆款剧本,为生成提供参考。 |
爆款剧本检索技能
必读
../../references/00-first-principles.md — 第一性原则(可拍性、留存性、一致性)
../../references/03-script-writing-standard.md — 剧本写作标准(对话比、视觉标记、网文感)
../../references/12-genre-specific-techniques.md — 类型化技巧(男频/女频特征)
功能
从117部爆款短剧剧本中检索最相关的剧本,为剧本生成提供参考。
检索方法
使用混合搜索(Chroma语义搜索 + TF-IDF关键词搜索):
- 语义搜索权重:60%(理解深层含义)
- 关键词搜索权重:40%(精确匹配)
使用场景
1. 剧本生成前检索
在生成剧本前,根据以下信息检索相关剧本:
- 剧本类型(复仇/逆袭/穿越/重生等)
- 情绪基调(愤怒/悲伤/爽感/紧张等)
- 主要情节(打脸/揭秘/对抗/和解等)
- 人物关系(主角vs反派/主角vs配角等)
- 场景类型(豪门/古代/现代/职场等)
示例查询:
"复仇女主霸总豪门打脸"
"穿越古代逆袭当皇后"
"重生复仇虐恋"
2. 检索结果使用
检索返回Top 5最相关的剧本,包含:
- 剧本文件名
- 相似度得分
- 内容预览(前200字符)
- 完整文件路径
注入到context:
参考以下爆款剧本的风格和节奏:
【参考剧本1】《封总的复仇娇妻》
- 相似度:0.892
- 特点:复仇女主、霸总、豪门恩怨、打脸爽剧
- 节奏:快节奏、高冲突密度、强情绪冲击
- 对话风格:短句、高对话比、视觉标记丰富
【参考剧本2】...
执行步骤
Step 1: 构建检索查询
从当前剧本需求中提取关键信息:
query_parts = []
if "类型" in episode_plan:
query_parts.append(episode_plan["类型"])
if "情绪" in episode_plan:
query_parts.append(episode_plan["情绪"])
if "主要情节" in episode_plan:
query_parts.append(episode_plan["主要情节"])
query = " ".join(query_parts)
Step 2: 执行检索
使用混合搜索引擎:
from hybrid_search import HybridSearchEngine
engine = HybridSearchEngine("../../knowledge/hit-scripts-md")
results = engine.hybrid_search(
query=query,
n_results=5,
semantic_weight=0.6,
keyword_weight=0.4
)
Step 3: 读取完整内容
reference_scripts = []
for result in results:
with open(result['path'], 'r', encoding='utf-8') as f:
content = f.read()
reference_scripts.append({
'filename': result['filename'],
'score': result['score'],
'content': content[:5000]
})
Step 4: 注入到生成提示词
你是一名短剧编剧,现在需要创作第N集剧本。
【参考爆款剧本】
以下是5个最相关的爆款剧本,请参考它们的:
- 节奏:场景数、冲突密度、时长分布
- 对话:句长、对话比、视觉标记
- 情绪:情绪强度、情感极性摆动
- 框架:开局-发展-高潮-反转-结局
1. 《封总的复仇娇妻》(相似度:0.892)
[内容节选...]
2. 《...》(相似度:0.856)
[内容节选...]
...
【当前任务】
根据以上参考,创作第N集剧本...
对比分析
生成剧本后,使用相同的5个参考剧本进行对比分析:
1. 节奏对比
generated_metrics = {
'scene_count': 6,
'conflict_density': 0.015,
'avg_scene_duration': 10,
'emotion_intensity': 0.012
}
reference_metrics = {
'scene_count': 8.5,
'conflict_density': 0.035,
'avg_scene_duration': 7.5,
'emotion_intensity': 0.025
}
if generated_metrics['scene_count'] < reference_metrics['scene_count']:
feedback.append("场景数偏少,建议增加2个过渡场景")
2. 对话风格对比
generated_style = {
'avg_sentence_length': 18,
'dialogue_ratio': 0.45,
'visual_markers_per_100': 1
}
reference_style = {
'avg_sentence_length': 12,
'dialogue_ratio': 0.72,
'visual_markers_per_100': 4
}
if generated_style['dialogue_ratio'] < reference_style['dialogue_ratio']:
feedback.append("对话比偏低,建议增加对话,减少叙述")
3. 情绪冲击力对比
generated_emotion_density = 0.5
reference_emotion_density = 2.0
if generated_emotion_density < reference_emotion_density:
feedback.append("情绪词汇偏少,建议增加情绪化表达")
复审流程
导演复审(review-director)
使用 comparative-review-skill 进行综合对比:
- 加载生成剧本和5个参考剧本
- 对比节奏、对话、情绪、框架
- 给出PASS/FAIL判断
- 提供具体改进建议(引用具体的参考剧本)
输出示例:
【综合审核】FAIL
节奏问题:
- 场景数:生成6场景,参考平均8.5场景 → 建议增加2个过渡场景
- 冲突密度:生成0.015,参考平均0.035 → 建议在第3、5场景增加对抗
对话风格问题:
- 句长:生成18字符,参考平均12字符 → 建议拆分长句
- 对话比:生成45%,参考平均72% → 建议增加对话,减少叙述
参考示例:
请参考《封总的复仇娇妻》第15集的对抗场景结构
请参考《霸总的替身新娘》第8集的对话节奏
编剧复审(script-writer)
使用 style-analysis-skill 分析风格:
- 统计生成剧本的语言风格指标
- 统计5个参考剧本的平均指标
- 对比分析差异
- 提供改进建议
输出示例:
【风格分析】
句长分布:
- 生成剧本:平均18字符
- 参考剧本:平均12字符
- 建议:拆分长句,增加短句比例
对话比:
- 生成剧本:45%
- 参考剧本:72%
- 建议:增加对话,减少叙述性文字
视觉标记:
- 生成剧本:1个/100字
- 参考剧本:4个/100字
- 建议:增加视觉标记(如:冷笑、嗤笑、冷哼等)
成功标准
- 检索准确性:检索到的5个剧本相似度 > 0.5
- 参考有效性:生成剧本的指标接近参考剧本(±20%)
- 风格一致性:网文感、节奏感、情绪冲击力达标
- 复审通过:导演和编剧复审均PASS
注意事项
- 开源版语料:默认不包含
knowledge/hit-scripts-md/,请自行放入有权使用的 .md 剧本语料
- 首次使用:首次运行需要构建索引(约60秒),索引会持久化保存到本地
.search_index/
- 后续使用:索引已保存,加载速度快(1-2秒)
- 男女频分类:支持按男频/女频/全部进行过滤,提高检索精准度
- 权重调整:可根据实际效果调整语义/关键词权重
- 参考数量:默认检索Top 5,可根据需要调整(3-10个)
- 内容长度:注入context时建议每个参考剧本取前5000字符,避免超出上下文限制
文件位置
- 检索引擎:
../../scripts/improved_hybrid_search.py(推荐)或 ../../scripts/hybrid_search.py(备选)
- 爆款剧本:
../../knowledge/hit-scripts-md/*.md(本地自备语料,开源版默认不包含)
- 对比分析:
comparative-review-skill
- 风格分析:
style-analysis-skill
使用指南(Agent 集成)
在 script-writer 中使用
Step 0:判断原小说类型(男频/女频/中性)
根据原小说特征判断(核心判断标准:主角性别):
男频特征:
- 【核心】主角:男性主角为中心,男主视角
- 类型:复仇、逆袭、霸道、战神、龙王、赘婿、神医
- 情节:打脸、装逼、碾压、称霸
- 示例:《赘婿之王》《战神归来》《神医下山》
女频特征:
- 【核心】主角:女性主角为中心,女主视角
- 类型:虐恋、甜宠、豪门、替身、真假千金、重生复仇
- 情节:误会、虐心、和解、宠溺、逆袭
- 示例:《豪门替身妻》《真假千金》《霸总的替身新娘》
中性/不确定:
- 双主角、群像剧、或类型不明显
- 使用 `all` 参数不限类型
判断流程:
1. 首先看主角性别:男主 → 男频,女主 → 女频
2. 其次看类型关键词:复仇/战神/赘婿 → 男频,虐恋/甜宠/替身 → 女频
3. 最后看情节特征:打脸/碾压 → 男频,误会/虐心 → 女频
判断结果:
- 男频 → 使用 `male` 参数
- 女频 → 使用 `female` 参数
- 中性 → 使用 `all` 参数
Step 1:构建查询关键词
根据剧本特征选择关键词:
- 核心类型:重生、穿越、复仇、逆袭、虐恋、甜宠
- 场景类型:豪门、古代、现代、职场、校园、宫廷
- 特殊元素:道门、玄幻、霸总、白莲花、打脸(可选)
示例:query = "重生 复仇 豪门"
Step 2:执行检索
python3 scripts/improved_hybrid_search.py "重生 复仇 豪门" male
python3 scripts/quick_search.py "重生 复仇 豪门"
Step 3:读取参考剧本
读取检索结果的前5000字作为参考
Step 4:注入到 Context
将参考剧本内容注入到生成 prompt 中,参考其:
1. 对话比(约70%)
2. 视觉标记密度(3.5-4.5个/100字)
3. 网文感关键词(1.8-3.0个/100字)
4. 句长控制(10-14字符)
5. 节奏感(起承转合)
关键词选择建议
优先级1:核心类型(必选)
优先级2:场景类型(必选)
优先级3:特殊元素(可选)
示例:
✅ 好的查询:"重生 复仇 豪门"(3个核心关键词)
❌ 不好的查询:"重生复仇道门天师豪门虐待"(太多关键词)
匹配度阈值
- 高相关:匹配度 ≥ 3(推荐使用)
- 中相关:匹配度 = 2(可参考)
- 低相关:匹配度 = 1(不推荐)
数量建议
- 精读:Top 3(完整阅读前5000字)
- 略读:Top 5(阅读前1000字)
- 浏览:Top 10(仅看标题和简介)
常见问题
Q1:为什么检索不到结果?
- 使用更通用的关键词(如:"重生 复仇")
- 降低匹配度阈值(从3降到2)
- 增加关键词变体(如:"豪门" + "富豪")
Q2:检索结果不相关?
- 增加更具体的关键词
- 提高匹配度阈值(从2提到3)
- 手动筛选结果
Q3:检索速度慢?
- 首次初始化慢是正常的(Chroma 建立索引约60秒)
- 后续查询会很快(索引已持久化保存)
- 如需快速测试,可临时使用 quick_search.py
- 缓存检索结果供后续使用
Q4:如何选择男频/女频?
- 根据原小说类型选择:男频通常是复仇、逆袭、霸道;女频通常是虐恋、甜宠、豪门
- 使用
male 参数检索男频剧本
- 使用
female 参数检索女频剧本
- 使用
all 参数不限类型(默认)