对比审核技能

SkillDev tools

Comparative review skill. Compares the pacing, dialogue, emotion, and structure of a generated script against a hit script, and gives a PASS/FAIL verdict with improvement suggestions.

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/comparative-review-skill/SKILL.md and read by ahel’s review.

必读

  1. ../../references/00-first-principles.md — 第一性原则(可拍性、留存性、一致性、可验证性)
  2. ../../references/03-script-writing-standard.md — 剧本写作标准(对话比、视觉标记、网文感、节奏控制)
  3. ../../references/04-review-gates.md — 审核门槛(PASS/FAIL标准、回改流程)

功能

对比生成剧本与参考的爆款剧本,从多个维度进行分析,防止AI味,确保剧本质量。

对比维度

1. 节奏对比

统计指标:

  • 场景数(scene_count)
  • 冲突密度(conflict_density)= 冲突次数 / 总字数
  • 平均场景时长(avg_scene_duration)
  • 时长方差(duration_variance)
  • 情绪强度(emotion_intensity)

对比方法:

# 统计生成剧本
generated = analyze_rhythm(generated_script)

# 统计参考剧本(5个的平均值)
reference = average([analyze_rhythm(ref) for ref in reference_scripts])

# 对比
rhythm_score = compare_metrics(generated, reference)

判断标准:

  • 场景数:±2个场景内为PASS
  • 冲突密度:±0.01内为PASS
  • 情绪强度:±0.01内为PASS

2. 对话风格对比

统计指标:

  • 平均句长(avg_sentence_length)
  • 对话比(dialogue_ratio)= 对话字数 / 总字数
  • 视觉标记密度(visual_markers_per_100)
  • 短句比例(short_sentence_ratio)< 10字符的句子占比
  • 网文感关键词密度(wanwen_keywords_per_100)

网文感关键词:

wanwen_keywords = [
    '冷笑', '嗤笑', '冷哼', '冷声', '冷冷',
    '眼神一冷', '眸光一沉', '嘴角勾起',
    '不屑', '轻蔑', '讥讽', '嘲讽',
    '霸气', '强势', '凌厉', '锐利'
]

判断标准:

  • 句长:12±3字符为PASS
  • 对话比:70%±10%为PASS
  • 视觉标记:3-5个/100字为PASS

3. 情绪冲击力对比

统计指标:

  • 情绪词汇密度(emotion_word_density)
  • 情感极性摆动(emotion_polarity_swing)
  • 高潮点数量(climax_count)
  • 悬念设置(suspense_count)

情绪词汇:

emotion_words = {
    '愤怒': ['愤怒', '暴怒', '怒火', '气愤', '恼怒'],
    '悲伤': ['悲伤', '难过', '伤心', '痛苦', '绝望'],
    '惊讶': ['惊讶', '震惊', '惊愕', '愕然', '惊呆'],
    '恐惧': ['恐惧', '害怕', '惊恐', '畏惧', '胆寒'],
    '喜悦': ['喜悦', '高兴', '欣喜', '愉悦', '兴奋']
}

判断标准:

  • 情绪词汇:1.5-2.5个/100字为PASS
  • 情感摆动:至少2次明显摆动为PASS
  • 高潮点:至少1个为PASS

4. 框架结构对比

结构要素:

  • 开局(hook):前10%是否有强钩子
  • 发展(development):中间60%是否有持续冲突
  • 高潮(climax):是否有明显高潮点
  • 反转(twist):是否有意外反转
  • 结局(ending):是否有强悬念/钩子

判断标准:

  • 5个要素至少满足4个为PASS

5. 跨集内容重复检查

检查对象:当前集与前一集的内容对比

检查项:

  • 场景重复:当前集与前一集是否有相同的场景
  • 剧情点重复:当前集与前一集是否有相同的剧情点
  • 对话重复:当前集与前一集是否有相似的对话
  • 事件重复:当前集与前一集是否是同一个事件

判断标准:

  • 发现任何重复内容,必须 FAIL
  • 必须指出具体的重复位置
  • 必须要求删除或重写重复内容

示例:

# 检查场景重复
ep01_scenes = extract_scenes(ep01_script)
ep02_scenes = extract_scenes(ep02_script)
duplicate_scenes = find_duplicates(ep01_scenes, ep02_scenes)

if duplicate_scenes:
    feedback.append({
        'dimension': '跨集内容重复',
        'issue': '发现重复场景',
        'location': f'第{N}集与第{N-1}集',
        'duplicates': duplicate_scenes,
        'suggestion': '删除重复场景,或改为新的场景'
    })

6. 事件完整性检查

检查对象:当前集的事件结构

检查项:

  • 事件完整性:当前集是否是一个完整的事件(有开始、发展、结束)
  • 剧情线完整性:当前集是否有未完成的剧情线
  • 逻辑连贯性:当前集与下一集的规划是否有逻辑断层

判断标准:

  • 事件不完整(如只有开始没有结束),必须 FAIL
  • 有未完成的剧情线,必须 FAIL
  • 与下一集的规划有逻辑断层,必须 FAIL

示例:

# 检查事件完整性
event_structure = analyze_event_structure(script)

if not event_structure['has_beginning']:
    feedback.append({
        'dimension': '事件完整性',
        'issue': '事件缺少开始',
        'suggestion': '添加事件的触发点'
    })

if not event_structure['has_ending']:
    feedback.append({
        'dimension': '事件完整性',
        'issue': '事件缺少结束',
        'suggestion': '添加事件的结果或转折'
    })

执行流程

Step 1: 加载剧本

# 加载生成剧本
with open(generated_script_path, 'r') as f:
    generated_script = f.read()

# 加载参考剧本(之前检索的Top 5)
reference_scripts = []
for ref_path in reference_paths:
    with open(ref_path, 'r') as f:
        reference_scripts.append(f.read())

Step 2: 统计指标

# 生成剧本指标
gen_rhythm = analyze_rhythm(generated_script)
gen_style = analyze_style(generated_script)
gen_emotion = analyze_emotion(generated_script)
gen_structure = analyze_structure(generated_script)

# 参考剧本平均指标
ref_rhythm = average([analyze_rhythm(ref) for ref in reference_scripts])
ref_style = average([analyze_style(ref) for ref in reference_scripts])
ref_emotion = average([analyze_emotion(ref) for ref in reference_scripts])
ref_structure = average([analyze_structure(ref) for ref in reference_scripts])

Step 3: 对比分析

feedback = []

# 节奏对比
if abs(gen_rhythm['scene_count'] - ref_rhythm['scene_count']) > 2:
    feedback.append({
        'dimension': '节奏',
        'issue': f"场景数偏{'少' if gen_rhythm['scene_count'] < ref_rhythm['scene_count'] else '多'}",
        'generated': gen_rhythm['scene_count'],
        'reference': ref_rhythm['scene_count'],
        'suggestion': f"建议调整为{ref_rhythm['scene_count']}个场景"
    })

# 对话风格对比
if gen_style['dialogue_ratio'] < 0.6:
    feedback.append({
        'dimension': '对话风格',
        'issue': '对话比偏低',
        'generated': f"{gen_style['dialogue_ratio']:.1%}",
        'reference': f"{ref_style['dialogue_ratio']:.1%}",
        'suggestion': '增加对话,减少叙述性文字'
    })

# 跨集内容重复检查
if previous_script:
    duplicate_scenes = find_duplicate_scenes(generated_script, previous_script)
    if duplicate_scenes:
        feedback.append({
            'dimension': '跨集内容重复',
            'issue': '发现重复场景',
            'location': f'第{N}集与第{N-1}集',
            'duplicates': duplicate_scenes,
            'suggestion': '删除重复场景,或改为新的场景',
            'severity': 'CRITICAL'  # 必须修复
        })

# 事件完整性检查
event_structure = analyze_event_structure(generated_script)
if not event_structure['is_complete']:
    feedback.append({
        'dimension': '事件完整性',
        'issue': event_structure['issue'],
        'suggestion': event_structure['suggestion'],
        'severity': 'CRITICAL'  # 必须修复
    })

# ... 其他维度对比

Step 4: 生成审核报告

report = {
    'verdict': 'PASS' if len(feedback) == 0 else 'FAIL',
    'overall_score': calculate_overall_score(gen, ref),
    'dimensions': {
        'rhythm': rhythm_score,
        'style': style_score,
        'emotion': emotion_score,
        'structure': structure_score
    },
    'feedback': feedback,
    'reference_examples': find_best_examples(feedback, reference_scripts)
}

输出格式

【综合审核报告】

判定:FAIL
综合得分:72/100

## 维度得分
- 节奏:65/100 ⚠️
- 对话风格:70/100 ⚠️
- 情绪冲击力:80/100 ✓
- 框架结构:85/100 ✓
- 跨集内容重复:FAIL ❌
- 事件完整性:FAIL ❌

## 详细反馈

### 跨集内容重复问题(CRITICAL)
1. 发现重复场景
   - 位置:第2集与第1集
   - 重复内容:搜身 + 签字 + 离开
   - 建议:删除第2集的重复内容,改为新的场景(如拍卖会、修炼等)

### 事件完整性问题(CRITICAL)
1. 事件不完整
   - 位置:第2集
   - 问题:第2集重复了第1集的事件,没有新的完整事件
   - 建议:第2集应该是一个新的完整事件,如"拍卖会展示实力"(入场 → 竞拍 → 展示 → 震惊)

### 节奏问题
1. 场景数偏少
   - 生成剧本:6个场景
   - 参考平均:8.5个场景
   - 建议:增加2个过渡场景,建议在第3场景后和第5场景后各增加一个

2. 冲突密度偏低
   - 生成剧本:0.015
   - 参考平均:0.035
   - 建议:在第3、5场景增加对抗情节

### 对话风格问题
1. 对话比偏低
   - 生成剧本:45%
   - 参考平均:72%
   - 建议:增加对话,减少叙述。将叙述性文字改为对话形式

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

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

## 参考示例

请参考以下爆款剧本的处理方式:

1. 《封总的复仇娇妻》第15集
   - 对抗场景结构:先铺垫→冲突爆发→反转→钩子
   - 对话节奏:短句+高密度+情绪化

2. 《霸总的替身新娘》第8集
   - 打脸场景:层层递进,每次打脸都有新信息
   - 视觉标记:冷笑、嗤笑、眼神一冷等高频使用

## 修改建议

优先级1(必须修改 - CRITICAL):
- **删除第2集的重复内容,改为新的完整事件**
- **确保每集是一个独立的故事单元**

优先级2(必须修改):
- 增加2个过渡场景
- 提高对话比到70%以上

优先级3(建议修改):
- 拆分长句
- 增加视觉标记

优先级4(可选优化):
- 增强情绪词汇密度
- 优化悬念设置

成功标准

  • 综合得分 ≥ 80分为PASS
  • 4个维度得分均 ≥ 70分
  • 无优先级1的问题
  • 跨集内容重复检查:PASS(无重复内容)
  • 事件完整性检查:PASS(事件完整、无逻辑断层)

注意事项

  1. 对比基准:使用检索到的Top 5爆款剧本作为基准
  2. 动态调整:根据实际效果调整判断标准
  3. 具体建议:必须引用具体的参考剧本示例
  4. 可操作性:建议必须具体、可执行

Signals

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