爆款剧本检索技能

SkillSearch

Hit script retrieval skill. Uses hybrid search (semantic + keyword) to retrieve the most relevant hit scripts as reference for generation.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the 爆款剧本检索技能 skill

What this skill tells your AI

The instructions your AI receives, as published by supreme-ultimate/novel-to-script-team in skills/hit-script-retrieval-skill/SKILL.md and read by ahel’s review.

必读

  1. ../../references/00-first-principles.md — 第一性原则(可拍性、留存性、一致性)
  2. ../../references/03-script-writing-standard.md — 剧本写作标准(对话比、视觉标记、网文感)
  3. ../../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)
# 结果:query = "复仇 愤怒 打脸揭秘"

Step 2: 执行检索

使用混合搜索引擎:

from hybrid_search import HybridSearchEngine

# 初始化(只需一次)
engine = HybridSearchEngine("../../knowledge/hit-scripts-md")

# 检索Top 5
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]  # 取前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  # 每100字0.5个情绪词
reference_emotion_density = 2.0  # 每100字2个情绪词

if generated_emotion_density < reference_emotion_density:
    feedback.append("情绪词汇偏少,建议增加情绪化表达")

复审流程

导演复审(review-director)

使用 comparative-review-skill 进行综合对比:

  1. 加载生成剧本和5个参考剧本
  2. 对比节奏、对话、情绪、框架
  3. 给出PASS/FAIL判断
  4. 提供具体改进建议(引用具体的参考剧本)

输出示例:

【综合审核】FAIL

节奏问题:
- 场景数:生成6场景,参考平均8.5场景 → 建议增加2个过渡场景
- 冲突密度:生成0.015,参考平均0.035 → 建议在第3、5场景增加对抗

对话风格问题:
- 句长:生成18字符,参考平均12字符 → 建议拆分长句
- 对话比:生成45%,参考平均72% → 建议增加对话,减少叙述

参考示例:
请参考《封总的复仇娇妻》第15集的对抗场景结构
请参考《霸总的替身新娘》第8集的对话节奏

编剧复审(script-writer)

使用 style-analysis-skill 分析风格:

  1. 统计生成剧本的语言风格指标
  2. 统计5个参考剧本的平均指标
  3. 对比分析差异
  4. 提供改进建议

输出示例:

【风格分析】

句长分布:
- 生成剧本:平均18字符
- 参考剧本:平均12字符
- 建议:拆分长句,增加短句比例

对话比:
- 生成剧本:45%
- 参考剧本:72%
- 建议:增加对话,减少叙述性文字

视觉标记:
- 生成剧本:1个/100字
- 参考剧本:4个/100字
- 建议:增加视觉标记(如:冷笑、嗤笑、冷哼等)

成功标准

  1. 检索准确性:检索到的5个剧本相似度 > 0.5
  2. 参考有效性:生成剧本的指标接近参考剧本(±20%)
  3. 风格一致性:网文感、节奏感、情绪冲击力达标
  4. 复审通过:导演和编剧复审均PASS

注意事项

  1. 开源版语料:默认不包含 knowledge/hit-scripts-md/,请自行放入有权使用的 .md 剧本语料
  2. 首次使用:首次运行需要构建索引(约60秒),索引会持久化保存到本地 .search_index/
  3. 后续使用:索引已保存,加载速度快(1-2秒)
  4. 男女频分类:支持按男频/女频/全部进行过滤,提高检索精准度
  5. 权重调整:可根据实际效果调整语义/关键词权重
  6. 参考数量:默认检索Top 5,可根据需要调整(3-10个)
  7. 内容长度:注入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/improved_hybrid_search.py "重生 复仇 豪门" female
# 或不限类型:python3 scripts/improved_hybrid_search.py "重生 复仇 豪门" all

# 备选:使用快速搜索(如环境不支持)
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 参数不限类型(默认)

Signals

GitHub stars
173
Forks
33
Last commit
May 2026
Advanced
Item type
skill
Key
hit-script-retrieval-skill
Source
github.com/supreme-ultimate/novel-to-script-team