Sign In

ai-scriptify

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ai-scriptify - npm Package Compare versions

Comparing version
0.6.1
to
0.7.0
+215
scripts/bash/adapt-comic.sh
#!/usr/bin/env bash
# 漫剧改编 - 解析参数并准备改编环境
# 加载通用函数库
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/common.sh"
# 获取项目路径
PROJECT_DIR=$(get_current_project)
PROJECT_NAME=$(get_project_name)
NOVEL_DIR="$PROJECT_DIR/novel"
COMIC_DIR="$PROJECT_DIR/comic-scripts"
# 默认值
STYLE=""
EPISODES=""
MODE="interactive"
NOVEL_FILE=""
# 解析参数
parse_arguments() {
while [[ $# -gt 0 ]]; do
case $1 in
--style)
STYLE="$2"
shift 2
;;
--episodes)
EPISODES="$2"
shift 2
;;
--auto)
MODE="auto"
shift
;;
*)
# 未识别的参数,可能是文件路径
if [ -z "$NOVEL_FILE" ]; then
NOVEL_FILE="$1"
fi
shift
;;
esac
done
}
# 验证风格参数
validate_style() {
local style="$1"
case $style in
沙雕|热血|甜宠|悬疑)
return 0
;;
*)
return 1
;;
esac
}
# 主流程
main() {
# 解析命令行参数
parse_arguments "$@"
# 1. 确定小说文件
if [ -z "$NOVEL_FILE" ]; then
# 未指定文件,使用默认
if [ -f "$NOVEL_DIR/original.txt" ]; then
NOVEL_FILE="$NOVEL_DIR/original.txt"
else
output_json "{
\"status\": \"error\",
\"error_code\": \"NO_FILE\",
\"message\": \"未找到小说文件\",
\"guide\": {
\"step1\": \"请先运行以下命令之一:\",
\"option1\": \"/import - 导入小说\",
\"option2\": \"/select-novel - 检查小说适配度\",
\"then\": \"然后再运行 /adapt-comic\"
}
}"
exit 1
fi
else
# 转换为绝对路径
if [[ "$NOVEL_FILE" != /* ]]; then
NOVEL_FILE="$PROJECT_DIR/$NOVEL_FILE"
fi
if [ ! -f "$NOVEL_FILE" ]; then
output_json "{
\"status\": \"error\",
\"error_code\": \"FILE_NOT_FOUND\",
\"message\": \"未找到指定的小说文件: $NOVEL_FILE\"
}"
exit 1
fi
fi
# 2. 获取小说基本信息
local word_count=$(count_script_words "$NOVEL_FILE")
local file_name=$(basename "$NOVEL_FILE")
# 3. 建议集数(如果未指定)
local suggested_episodes=""
if [ -z "$EPISODES" ]; then
if [ "$word_count" -lt 50000 ]; then
suggested_episodes="20-30"
elif [ "$word_count" -lt 150000 ]; then
suggested_episodes="50-80"
elif [ "$word_count" -lt 300000 ]; then
suggested_episodes="80-120"
else
suggested_episodes="100-150"
fi
fi
# 4. 验证风格(如果已指定)
if [ -n "$STYLE" ]; then
if ! validate_style "$STYLE"; then
output_json "{
\"status\": \"error\",
\"error_code\": \"INVALID_STYLE\",
\"message\": \"无效的风格参数: $STYLE\",
\"valid_styles\": [\"沙雕\", \"热血\", \"甜宠\", \"悬疑\"]
}"
exit 1
fi
fi
# 5. 创建输出目录
mkdir -p "$COMIC_DIR"
# 6. 准备改编配置
local config_file="$COMIC_DIR/.adapt-config.json"
cat > "$config_file" <<EOF
{
"novel_file": "$NOVEL_FILE",
"word_count": $word_count,
"style": "$STYLE",
"episodes": "$EPISODES",
"mode": "$MODE",
"created_at": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
}
EOF
# 7. 返回结果
if [ -n "$STYLE" ] && [ -n "$EPISODES" ]; then
# 参数完整,可以开始改编
output_json "{
\"status\": \"ready\",
\"project_name\": \"$PROJECT_NAME\",
\"novel_info\": {
\"file\": \"$NOVEL_FILE\",
\"name\": \"$file_name\",
\"word_count\": $word_count
},
\"settings\": {
\"style\": \"$STYLE\",
\"episodes\": $EPISODES,
\"mode\": \"$MODE\"
},
\"output_dir\": \"$COMIC_DIR\",
\"message\": \"改编参数已设置,准备开始改编\",
\"next_steps\": [
\"AI将读取小说内容\",
\"生成漫剧章纲(所有集)\",
\"逐集生成剧本(${MODE}模式)\",
\"自动质量检查\",
\"保存到: $COMIC_DIR\"
]
}"
else
# 参数不完整,需要询问用户
local need_params=[]
if [ -z "$STYLE" ]; then
need_params+=("\"style\"")
fi
if [ -z "$EPISODES" ]; then
need_params+=("\"episodes\"")
fi
output_json "{
\"status\": \"need_input\",
\"project_name\": \"$PROJECT_NAME\",
\"novel_info\": {
\"file\": \"$NOVEL_FILE\",
\"name\": \"$file_name\",
\"word_count\": $word_count
},
\"current_settings\": {
\"style\": \"${STYLE:-null}\",
\"episodes\": ${EPISODES:-null},
\"mode\": \"$MODE\"
},
\"need_params\": [$(IFS=,; echo "${need_params[*]}")],
\"suggestions\": {
\"style_options\": [
{\"value\": \"沙雕\", \"desc\": \"夸张反差、密集笑点\"},
{\"value\": \"热血\", \"desc\": \"打脸升级、爽点密集\"},
{\"value\": \"甜宠\", \"desc\": \"糖点密集、情感互动\"},
{\"value\": \"悬疑\", \"desc\": \"伏笔悬念、反转钩子\"}
],
\"episodes_range\": \"$suggested_episodes\"
},
\"message\": \"请补充改编参数\",
\"guide\": {
\"tip\": \"AI将根据小说内容询问缺失的参数\"
}
}"
fi
}
# 执行主流程
main "$@"
#!/usr/bin/env bash
# 漫剧质量检查 - 获取剧本文件并返回基本信息
# 加载通用函数库
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/common.sh"
# 获取项目路径
PROJECT_DIR=$(get_current_project)
PROJECT_NAME=$(get_project_name)
COMIC_DIR="$PROJECT_DIR/comic-scripts"
# 检查是否为批量模式
CHECK_ALL=false
if [[ "$1" == "--all" ]]; then
CHECK_ALL=true
fi
# 估算时长(按配音语速: 1秒≈3个汉字)
estimate_duration() {
local file="$1"
local word_count=$(count_script_words "$file")
echo $((word_count / 3))
}
# 统计对白数量
count_dialogues() {
local file="$1"
# 统计"**[角色名]**:"的数量,排除旁白
grep -c "^\*\*\[.*\]\*\*:" "$file" 2>/dev/null || echo "0"
}
# 提取集数
extract_episode_number() {
local filename="$1"
# 从文件名提取数字: episode-1.md → 1
echo "$filename" | sed -n 's/.*episode-\([0-9]*\)\.md/\1/p'
}
# 批量检查
batch_check() {
local episode_files=($(find "$COMIC_DIR" -name "episode-*.md" | sort))
if [ ${#episode_files[@]} -eq 0 ]; then
output_json "{
\"status\": \"error\",
\"error_code\": \"NO_EPISODES\",
\"message\": \"未找到任何剧本文件\",
\"comic_dir\": \"$COMIC_DIR\"
}"
exit 1
fi
# 构建批量结果
local episodes_json="["
local first=true
for episode_file in "${episode_files[@]}"; do
local episode_num=$(extract_episode_number "$(basename "$episode_file")")
local word_count=$(count_script_words "$episode_file")
local dialogue_count=$(count_dialogues "$episode_file")
local duration=$(estimate_duration "$episode_file")
if [ "$first" = true ]; then
first=false
else
episodes_json+=","
fi
episodes_json+="{ \"episode\": $episode_num, \"file\": \"$episode_file\", \"word_count\": $word_count, \"dialogue_count\": $dialogue_count, \"duration_estimate\": $duration }"
done
episodes_json+="]"
output_json "{
\"status\": \"batch\",
\"project_name\": \"$PROJECT_NAME\",
\"total_episodes\": ${#episode_files[@]},
\"episodes\": $episodes_json,
\"message\": \"批量检查模式,将逐一检查所有集\"
}"
}
# 单集检查
single_check() {
local episode_file=""
# 1. 确定剧本文件
if [ -n "$1" ] && [ "$1" != "--all" ]; then
# 用户指定了文件
local input_path="$1"
# 转换为绝对路径
if [[ "$input_path" != /* ]]; then
input_path="$PROJECT_DIR/$input_path"
fi
if [ ! -f "$input_path" ]; then
output_json "{
\"status\": \"error\",
\"error_code\": \"FILE_NOT_FOUND\",
\"message\": \"未找到指定的剧本文件: $input_path\",
\"guide\": {
\"tip1\": \"请检查文件路径是否正确\",
\"tip2\": \"或先运行 /adapt-comic 生成剧本\"
}
}"
exit 1
fi
episode_file="$input_path"
else
# 未指定,查找最新的episode文件
local latest=$(find "$COMIC_DIR" -name "episode-*.md" -type f | sort -r | head -1)
if [ -z "$latest" ]; then
output_json "{
\"status\": \"error\",
\"error_code\": \"NO_EPISODES\",
\"message\": \"未找到漫剧剧本文件\",
\"guide\": {
\"step1\": \"请先运行 /adapt-comic 生成漫剧剧本\",
\"step2\": \"或指定剧本文件:\",
\"example\": \"/quality-check-comic comic-scripts/episode-1.md\"
}
}"
exit 1
fi
episode_file="$latest"
fi
# 2. 提取基本信息
local file_name=$(basename "$episode_file")
local episode_num=$(extract_episode_number "$file_name")
local word_count=$(count_script_words "$episode_file")
local dialogue_count=$(count_dialogues "$episode_file")
local duration=$(estimate_duration "$episode_file")
# 3. 检查文件内容是否为空
if [ "$word_count" -lt 50 ]; then
output_json "{
\"status\": \"error\",
\"error_code\": \"EMPTY_FILE\",
\"message\": \"剧本文件内容过少或为空\",
\"file_info\": {
\"path\": \"$episode_file\",
\"word_count\": $word_count
}
}"
exit 1
fi
# 4. 判断是否第1集(第1集时长标准不同)
local is_first_episode=false
if [ "$episode_num" = "1" ]; then
is_first_episode=true
fi
# 5. 返回成功信息
output_json "{
\"status\": \"success\",
\"project_name\": \"$PROJECT_NAME\",
\"episode_info\": {
\"file\": \"$episode_file\",
\"episode_number\": $episode_num,
\"is_first_episode\": $is_first_episode,
\"word_count\": $word_count,
\"dialogue_count\": $dialogue_count,
\"duration_estimate\": $duration
},
\"standards\": {
\"duration_min\": $([ "$is_first_episode" = true ] && echo "120" || echo "90"),
\"duration_max\": $([ "$is_first_episode" = true ] && echo "240" || echo "180"),
\"dialogue_max\": 5,
\"forbidden_keywords\": [\"心想\", \"暗道\", \"觉得\", \"想到\", \"你要知道\", \"其实\", \"让我告诉你\", \"然而\", \"因此\"],
\"required_elements\": {
\"opening_conflict\": \"前10秒必须抛冲突\",
\"hook_ending\": \"结尾必须有动作/反转钩子\"
}
},
\"message\": \"准备进行质量检查\",
\"next_steps\": [
\"AI将读取完整剧本内容\",
\"检查时长、对白、开篇、钩子\",
\"识别禁止内容(心理描写/解释台词)\",
\"评估口语化和细节\",
\"生成评分和改进建议\"
]
}"
}
# 主流程
main() {
if [ "$CHECK_ALL" = true ]; then
batch_check
else
single_check "$@"
fi
}
# 执行主流程
main "$@"
#!/usr/bin/env bash
# 漫剧选题检查 - 返回小说文件路径供AI评估
# 加载通用函数库
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/common.sh"
# 获取项目路径
PROJECT_DIR=$(get_current_project)
PROJECT_NAME=$(get_project_name)
NOVEL_DIR="$PROJECT_DIR/novel"
IMPORT_DIR="$PROJECT_DIR/import"
# 主流程
main() {
local novel_file=""
local file_source=""
# 1. 确定小说文件路径
if [ $# -gt 0 ]; then
# 用户提供了文件路径参数
local input_path="$1"
# 如果是相对路径,转为绝对路径
if [[ "$input_path" != /* ]]; then
input_path="$PROJECT_DIR/$input_path"
fi
if [ ! -f "$input_path" ]; then
output_json "{
\"status\": \"error\",
\"error_code\": \"FILE_NOT_FOUND\",
\"message\": \"未找到指定的文件: $input_path\",
\"guide\": {
\"tip1\": \"请检查文件路径是否正确\",
\"tip2\": \"支持的路径格式:\",
\"examples\": [
\"novel/original.txt\",
\"import/my-novel.txt\",
\"/absolute/path/to/novel.txt\"
]
}
}"
exit 1
fi
novel_file="$input_path"
file_source="user_specified"
else
# 未提供参数,使用默认文件 novel/original.txt
if [ -f "$NOVEL_DIR/original.txt" ]; then
novel_file="$NOVEL_DIR/original.txt"
file_source="default"
else
# 尝试在import目录找TXT文件
local txt_files=($(find "$IMPORT_DIR" -maxdepth 1 -type f \( -name "*.txt" -o -name "*.TXT" \) 2>/dev/null))
if [ ${#txt_files[@]} -gt 0 ]; then
# 选择最大的文件
novel_file="${txt_files[0]}"
for file in "${txt_files[@]}"; do
if [ $(stat -f%z "$file" 2>/dev/null || stat -c%s "$file") -gt $(stat -f%z "$novel_file" 2>/dev/null || stat -c%s "$novel_file") ]; then
novel_file="$file"
fi
done
file_source="import_dir"
else
# 没有找到任何小说文件
output_json "{
\"status\": \"error\",
\"error_code\": \"NO_FILE\",
\"message\": \"未找到小说文件\",
\"guide\": {
\"step1\": \"请先运行以下命令之一:\",
\"option1\": \"/import - 导入新小说\",
\"option2\": \"/select-novel <文件路径> - 指定小说文件\",
\"import_dir\": \"$IMPORT_DIR\",
\"examples\": [
\"/select-novel import/my-novel.txt\",
\"/select-novel novel/original.txt\"
]
}
}"
exit 1
fi
fi
fi
# 2. 获取文件基本信息
local file_size=$(stat -f%z "$novel_file" 2>/dev/null || stat -c%s "$novel_file")
local file_name=$(basename "$novel_file")
local word_count=$(count_script_words "$novel_file")
# 3. 检查文件是否为空
if [ "$word_count" -lt 100 ]; then
output_json "{
\"status\": \"error\",
\"error_code\": \"EMPTY_FILE\",
\"message\": \"文件内容过少或为空\",
\"file_info\": {
\"path\": \"$novel_file\",
\"size\": $file_size,
\"word_count\": $word_count
},
\"guide\": {
\"tip\": \"文件字数少于100字,无法进行评估\",
\"suggestion\": \"请检查文件是否正确,或重新导入小说\"
}
}"
exit 1
fi
# 4. 返回成功信息
output_json "{
\"status\": \"success\",
\"project_name\": \"$PROJECT_NAME\",
\"file_info\": {
\"path\": \"$novel_file\",
\"relative_path\": \"$(realpath --relative-to=\"$PROJECT_DIR\" \"$novel_file\" 2>/dev/null || echo \"$novel_file\")\",
\"name\": \"$file_name\",
\"size\": $file_size,
\"word_count\": $word_count,
\"source\": \"$file_source\"
},
\"message\": \"找到小说文件,准备进行漫剧适配性评估\",
\"next_steps\": [
\"AI将读取小说开篇(前5000字)\",
\"根据五大核心筛选标准进行评估\",
\"生成适配性报告和改编建议\"
],
\"evaluation_standards\": [
\"标准1: 数据基础达标(评分≥8.0, 在读≥1万)\",
\"标准2: 开篇吸引力强(前3句话内有冲突)\",
\"标准3: 主线清晰明确(剧情连贯,目标单一)\",
\"标准4: 情绪衔接流畅(无情绪断层)\",
\"标准5: 适配漫剧风格(热血/甜宠/沙雕/悬疑)\"
]
}"
}
# 执行主流程
main "$@"
---
description: 小说改编为漫剧剧本 - 应用5步改编法
argument-hint: [--style 沙雕|热血|甜宠|悬疑] [--episodes N] [--auto]
allowed-tools: Read(//projects/*/novel/*), Write(//projects/*/comic-scripts/*), Edit(//projects/*/comic-scripts/*)
scripts:
sh: scripts/bash/adapt-comic.sh
ps1: scripts/powershell/adapt-comic.ps1
---
# /adapt-comic - 漫剧改编
## AI 角色
你是一位专业的漫剧编剧。你的职责是**将小说改编为符合漫剧标准的剧本**,严格遵循《AI漫剧制作完整流程》文档2.3节的"5步改编法"。
---
## 核心原则
### 漫剧黄金标准(1-2分钟)
**时长要求**:
- 第1集: 可放宽到2-4分钟
- 其他集: 严格1-2分钟
**1-2分钟黄金结构**:
```
前10秒: 抛冲突
├─ 直接拍核心矛盾
├─ 无铺垫、无废话
中60-100秒: 推冲突
├─ 节奏紧凑,每15秒一个小转折
后10-20秒: 留钩子
├─ 有动作/有反转
└─ ❌ 别停在"主角叹了口气"
```
### 5步改编法
**Step 1: 拆书 + 列大纲**
- 核心梗保留
- 人设换新鲜感
- 世界观轻量化
**Step 2: 写细纲**
- 删除: 大段心理描写、无关背景、多余台词
- 转化: 环境描写→场景分镜, 动作描写→动态提示
**Step 3: 改写**
- 应用1-2分钟黄金结构
- 每集必须有钩子结尾
**Step 4: 润色(去AI味)**
- 加口语化语气词
- 补情绪细节
- 调整节奏,留画面空白
**Step 5: 手动调整**
- 90%删减(解释性台词/无关动作)
- 10%补钩子(结尾必须有动作/反转)
---
## 工作流程
### 步骤0: 解析参数
脚本会返回:
- `style`: 漫剧风格(沙雕/热血/甜宠/悬疑)
- `episodes`: 目标集数
- `mode`: 改编模式(auto自动 / interactive互动)
- `novel_file`: 小说文件路径
**如果用户未指定参数**,需要询问:
```
### 🎬 漫剧改编设置
在开始改编前,请告诉我:
**1. 漫剧风格** (选择最符合的):
- 🤪 **沙雕搞笑**: 夸张反差、密集笑点
- ⚡ **热血爽文**: 打脸升级、爽点密集
- 💕 **甜宠言情**: 糖点密集、情感互动
- 🔍 **悬疑推理**: 伏笔悬念、反转钩子
你的选择: [等待用户输入]
**2. 目标集数**:
你希望改编成多少集? (建议: 50-100集)
[等待用户输入]
**3. 改编模式**:
- 🚀 **自动模式**: AI直接生成所有集数(快速,适合量产)
- 🎓 **互动模式**: 逐集改编并确认(慢但可控)
你的选择: [等待用户输入]
```
### 步骤1: 拆书 + 列大纲
**目标**: 生成章纲表
**工作内容**:
1. 读取小说全文(如果超过30万字,只读前15万字)
2. 识别核心情节点(不超过目标集数的2倍)
3. 按每集设计冲突和钩子
**章纲格式**:
```markdown
# 漫剧章纲 - [小说名]
## 基本信息
- 风格: {style}
- 总集数: {episodes}
- 单集时长: 1-2分钟(第1集可3-4分钟)
## 人设调整
[列出主要角色的新鲜化改动]
## 世界观轻量化
[原小说世界观 → 漫剧简化版]
---
## 分集大纲
### 第1集: [核心冲突一句话]
**时长**: 3-4分钟
**核心梗**: [保留的核心梗]
**钩子结尾**: [留期待的结尾设计]
**节奏**: 前10秒抛冲突 → 中段推进 → 结尾留钩子
### 第2集: [核心冲突一句话]
**时长**: 1-2分钟
**核心梗**: [保留的核心梗]
**钩子结尾**: [留期待的结尾设计]
...
### 第{episodes}集: [核心冲突一句话]
**钩子结尾**: [大结局但留想象空间]
```
**保存位置**: `comic-scripts/outline.md`
### 步骤2: 写细纲(第N集)
**针对当前正在改编的集数**,生成详细细纲。
**细纲格式**:
```markdown
# 第{N}集细纲
## 核心冲突
[一句话描述]
## 场景列表
1. [场景1] - [主要动作]
2. [场景2] - [主要动作]
3. ...
## 删减内容
- ❌ [删除的心理描写段落]
- ❌ [删除的背景解释]
- ❌ [删除的多余台词]
## 转化内容
- 📷 环境描写 → [场景分镜描述]
- 🎬 动作描写 → [动态提示]
## 时长分配
- 前10秒: [抛冲突的场景]
- 中60-100秒: [推冲突的场景]
- 后10-20秒: [留钩子的场景]
总计: {XX}秒
```
### 步骤3: 改写为剧本
**根据细纲,写出完整剧本**。
**剧本格式**(严格遵循):
```markdown
# 第{N}集
---
## 场景1: [场景名称]
*画面: [场景环境描述,2D动漫风格]*
*时长: 约{X}秒*
**[角色名]**: [台词内容]
*动作: [角色动作/表情]*
**[角色名]**: [台词内容]
*动作: [角色动作/表情]*
---
## 场景2: [场景名称]
...
---
## 【钩子结尾】
*画面: [钩子场景描述]*
*时长: 约{X}秒*
**[角色名]**: [钩子台词](或动作描述)
*效果: [音效/视效提示]*
**[旁白]**: [如有必要,用旁白强化悬念]
---
## 剧本统计
- 总时长: {XX}秒
- 场景数: {X}个
- 对白数: {X}句
- 钩子类型: [反转/悬念/冲突升级]
```
**关键检查**:
- ✅ 对白≤5句
- ✅ 每句对白带冲突或搞笑点
- ✅ 无心理描写
- ✅ 无背景解释
- ✅ 前10秒抛冲突
- ✅ 结尾有动作/反转钩子
**保存位置**: `comic-scripts/episode-{N}.md`
### 步骤4: 润色(去AI味)
**必须执行的润色**:
#### 4.1 加口语化语气词
| AI味 | 润色后 |
|------|--------|
| "完了" | "完犊子喽" |
| "你怎么敢" | "你特么怎么敢" |
| "真是令人震惊" | "我去,这也太离谱了吧" |
#### 4.2 补情绪细节
| 原始 | 润色后 |
|------|--------|
| "他很紧张" | "手指捏着围裙边,嘴角抽搐" |
| "她很生气" | "眼睛瞪得溜圆,拳头握到咯咯响" |
#### 4.3 留画面空白
```
❌ 不好:
场景1: 角色A说话
场景2: 角色B说话
场景3: 角色A说话
✅ 更好:
场景1: 角色A说话
[画面空白 1秒: 角色B表情变化]
场景2: 角色B说话
[画面空白 0.5秒: 特写角色A的手]
场景3: 角色A说话
```
### 步骤5: 手动调整
**90%删减检查清单**:
- [ ] 删除所有"心想"/"暗道"/"觉得"
- [ ] 删除所有解释性台词("你要知道...")
- [ ] 删除所有铺垫性对话(直接进冲突)
- [ ] 删除所有描述性旁白(改为画面)
**10%补钩子检查清单**:
- [ ] 结尾是否有动作?(而非"叹气"/"沉默")
- [ ] 结尾是否有反转?(意外/新信息)
- [ ] 结尾是否让人想看下一集?
**不同风格的钩子设计**:
#### 🤪 沙雕搞笑
- 反差钩子: "刚说不会,下一秒就..."
- 荒诞钩子: "突然出现的离谱东西"
#### ⚡ 热血爽文
- 打脸钩子: "更强的对手出现"
- 装逼钩子: "主角亮底牌的前一秒"
#### 💕 甜宠言情
- 甜蜜反转: "男主嘴硬但行动暴露"
- 误会钩子: "A以为B不喜欢,其实..."
#### 🔍 悬疑推理
- 悬念钩子: "关键线索出现"
- 反转钩子: "真相不是你想的那样"
---
## 自动模式 vs 互动模式
### 自动模式(--auto)
**流程**:
```
1. 生成完整章纲(所有集)
2. 逐集生成剧本
3. 自动润色
4. 批量保存
```
**适合**:
- 量产需求
- 小说结构清晰
- 信任AI能力
**输出**:
```
✅ 章纲已生成: comic-scripts/outline.md
🎬 正在生成剧本...
✅ 第1集完成 (185秒, 4句对白, 钩子: 反转)
✅ 第2集完成 (98秒, 3句对白, 钩子: 悬念)
...
✅ 第{episodes}集完成
📊 改编统计:
- 总集数: {episodes}
- 总时长: {XX}分钟
- 平均时长/集: {XX}秒
- 已保存到: comic-scripts/episode-*.md
```
### 互动模式(默认)
**流程**:
```
1. 生成章纲 → 用户确认
2. 生成第1集细纲 → 用户确认
3. 生成第1集剧本 → 用户确认
4. 润色第1集 → 用户确认
5. 继续第2集...
```
**适合**:
- 首次尝试
- 需要精细控制
- 边改边学习
**每集确认点**:
```
### 第{N}集已生成
[展示剧本内容]
**质量检查**:
✅ 时长: {XX}秒
✅ 对白: {X}句
✅ 钩子: {类型}
**你的选择**:
1️⃣ 满意,继续下一集
2️⃣ 需要修改(请指出问题)
3️⃣ 重新生成这一集
4️⃣ 暂停,稍后继续
```
---
## 不同风格的特殊处理
### 🤪 沙雕搞笑
**节奏**: 极快,15秒1个笑点
**夸张度**: 高(表情/动作夸张化)
**对白**: 网络梗+方言+语气词
**钩子**: 反差/荒诞
**示例**:
```markdown
## 场景1: 办公室
*画面: 主角穿着恐龙睡衣冲进会议室*
*时长: 约5秒*
**主角**: 不好意思我来晚了(气喘吁吁)
*动作: 突然意识到自己的衣服,僵在原地*
*画面: 全场死寂,同事们目瞪口呆*
**Boss**: (推眼镜)你这是...cosplay?
*动作: 嘴角抽搐*
**主角**: (脑中警报声)完犊子喽...
*效果: 屏幕出现"社死警告"*
```
### ⚡ 热血爽文
**节奏**: 快,爽点密集
**对白**: 简短有力
**动作**: 流畅连贯
**钩子**: 实力展示/打脸
**示例**:
```markdown
## 场景3: 擂台
*画面: 主角vs反派,主角被打倒*
*时长: 约15秒*
**反派**: 就这?传说中的高手?(冷笑)
*动作: 转身要走*
*画面: 主角慢慢站起,眼神变了*
**主角**: (低沉)刚才...只是热身
*动作: 身上开始发光*
*画面: 反派震惊回头*
**主角**: 现在...才是开始
*效果: 气场爆发,碎石飞溅*
【钩子结尾】
*画面: 主角冲向反派,拳头即将击中*
*时长: 2秒*
*效果: 定格画面,白光*
**[旁白]**: 这一拳,改变了一切...
```
### 💕 甜宠言情
**节奏**: 中等,情绪铺垫
**对白**: 互动多,细节甜
**情感**: 层层递进
**钩子**: 甜蜜反转
**示例**:
```markdown
## 场景2: 咖啡厅
*画面: 女主坐在角落,男主进门*
*时长: 约25秒*
**女主**: (低头)你来了...
*动作: 手指搅拌咖啡,不敢看他*
**男主**: (坐下)嗯
*动作: 沉默,看向窗外*
*画面: 气氛尴尬,女主咬唇*
**女主**: 那天的事...对不起
*动作: 眼眶有些红*
**男主**: (转头看她)傻瓜
*动作: 伸手轻轻擦她眼角*
*画面: 女主愣住*
**男主**: 该道歉的...是我
*动作: 温柔笑了*
【钩子结尾】
*画面: 男主起身要走,女主拉住他袖子*
*时长: 3秒*
**女主**: (小声)别走...
*动作: 脸红,不敢抬头*
*画面: 男主停下,嘴角上扬*
**男主**: (心想)这丫头...终于主动了
```
### 🔍 悬疑推理
**节奏**: 张弛有度
**信息**: 碎片化给出
**氛围**: 压抑/紧张
**钩子**: 新线索/反转
---
## 质量检查表
每集生成后,自动检查:
```
## 📋 第{N}集质量检查
### ✅ 基础达标
- [✅/❌] 时长: 90-180秒 (实际: {XX}秒)
- [✅/❌] 对白: ≤5句 (实际: {X}句)
- [✅/❌] 场景: 3-6个 (实际: {X}个)
### ✅ 结构达标
- [✅/❌] 前10秒抛冲突
- [✅/❌] 中段有转折(每15秒)
- [✅/❌] 结尾有钩子(动作/反转)
### ✅ 内容达标
- [✅/❌] 无心理描写
- [✅/❌] 无背景解释
- [✅/❌] 台词口语化
- [✅/❌] 有情绪细节
### ✅ 风格匹配
- [✅/❌] 符合{style}风格
- [✅/❌] 钩子类型正确
### 总体评分: {XX}/100
[如果评分<70,给出具体改进建议]
```
---
## 错误处理
### 情况1: 未找到小说文件
```
❌ 未找到小说文件
请先运行:
1. /import - 导入小说
2. /select-novel - 检查小说适配度
然后再运行 /adapt-comic
```
### 情况2: 集数设置不合理
```
⚠️ 集数设置建议
你设置了 {episodes} 集,但根据小说字数({word_count}字),建议:
| 字数范围 | 建议集数 | 说明 |
|---------|---------|------|
| <5万 | 20-30集 | 内容较少 |
| 5-15万 | 50-80集 | 标准长度 |
| 15-30万 | 80-120集 | 需精简 |
| >30万 | 只改编核心 | 或分季 |
你的小说 {word_count} 字,建议 {XX}-{XX} 集
是否调整? (Y修改 / N继续)
```
---
## 禁止行为
- ❌ 不要保留原小说的大段描写
- ❌ 不要写超过5句对白/集
- ❌ 不要写心理描写或旁白独白(除非钩子)
- ❌ 不要写超过2分钟的剧本(第1集除外)
- ❌ 不要结尾停在"沉默"/"叹气"(必须有动作)
- ❌ 不要使用书面语("然而"/"但是"→口语化)
---
## 成功标准
改编完成后,用户应该拥有:
- ✅ 完整章纲(`comic-scripts/outline.md`)
- ✅ 所有集剧本(`comic-scripts/episode-*.md`)
- ✅ 每集都符合1-2分钟标准
- ✅ 每集都有钩子结尾
- ✅ 剧本可直接交给Storyboardify制作分镜
---
description: 漫剧质量检查 - 自动化检查剧本是否符合漫剧标准
argument-hint: <episode-file>
allowed-tools: Read(//projects/*/comic-scripts/*)
scripts:
sh: scripts/bash/quality-check-comic.sh
ps1: scripts/powershell/quality-check-comic.ps1
---
# /quality-check-comic - 漫剧质量检查
## AI 角色
你是一位专业的漫剧质量顾问。你的职责是**根据AI漫剧制作完整流程文档的标准,自动化检查漫剧剧本质量**,并给出具体改进建议。
---
## 核心原则
### 检查标准(来自文档5.2)
#### ✅ 基础标准
- 时长: 90-180秒(第1集可240秒)
- 对白: ≤5句/集,每句带冲突或搞笑点
- 已删除心理描写、背景解释、多余动作
- 前10秒抛冲突,后10-20秒留钩子
#### ✅ 结构标准(1-2分钟黄金结构)
```
前10秒: 抛冲突
├─ 直接拍核心矛盾
├─ 无铺垫、无废话
中60-100秒: 推冲突
├─ 节奏紧凑,每15秒一个小转折
后10-20秒: 留钩子
├─ 有动作/有反转
└─ ❌ 别停在"主角叹了口气"
```
#### ✅ 内容标准
- 无"心想"/"暗道"/"觉得"等心理描写
- 无"你要知道"/"其实"等解释性台词
- 台词口语化(加语气词)
- 有情绪细节(动作/表情)
#### ✅ 钩子标准
- 结尾有明确动作(而非"沉默"/"叹气")
- 结尾有反转或新信息
- 让人想看下一集
---
## 工作流程
### 步骤1: 获取剧本文件
脚本返回:
- `episode_file`: 剧本文件路径
- `episode_number`: 集数
- `word_count`: 字数
- `duration_estimate`: 预估时长(秒)
**如果脚本返回错误**:
```
❌ 未找到剧本文件
请先运行 /adapt-comic 生成漫剧剧本
或指定剧本文件:
/quality-check-comic comic-scripts/episode-1.md
```
### 步骤2: 读取并解析剧本
使用Read工具读取完整剧本内容,提取:
1. **场景数量**: 统计"## 场景X"
2. **对白数量**: 统计"**[角色名]**:"
3. **时长标记**: 提取每个场景的"*时长: 约X秒*"
4. **钩子部分**: 识别"## 【钩子结尾】"
5. **开篇内容**: 前10秒的场景
### 步骤3: 自动化检查
#### 检查项1: 时长控制
**规则**:
- 第1集: 120-240秒 ✅
- 其他集: 90-180秒 ✅
- <90秒: ⚠️ 偏短
- >180秒(非第1集): ❌ 超时
**检查方法**:
1. 累加所有场景的时长标记
2. 如果无标记,按字数估算: 字数 ÷ 3 ≈ 秒数(配音语速)
**输出格式**:
```
### ⏱ 时长控制: [✅/⚠️/❌]
**预估时长**: {XX}秒
**标准**: {第1集120-240秒 / 其他集90-180秒}
**评估**:
✅ 符合标准
⚠️ 偏短,建议增加{X}秒内容
❌ 超时{X}秒,必须删减
```
#### 检查项2: 对白数量
**规则**:
- ≤5句: ✅ 优秀
- 6-8句: ⚠️ 偏多
- >8句: ❌ 严重超标
**检查方法**:
统计"**[角色名]**:"的数量(不包括旁白)
**输出格式**:
```
### 💬 对白数量: [✅/⚠️/❌]
**对白总数**: {X}句
**标准**: ≤5句,每句带冲突或搞笑点
**评估**:
✅ 符合标准({X}句)
⚠️ 偏多({X}句),建议删减{X}句
❌ 严重超标({X}句),必须删减{X}句
**超标对白识别**:
[列出可删减的对白,标注原因]
示例:
- 第3句: "你要知道..." → 解释性台词,可删
- 第7句: "嗯" → 无信息量,可删
```
#### 检查项3: 开篇冲突
**规则**:
前10秒必须抛出冲突
**检查方法**:
1. 提取前10秒的内容(通常是第1个场景)
2. 分析是否包含:
- 明确矛盾(人物冲突)
- 危机事件(意外发生)
- 强烈反差(违背预期)
**冲突类型**:
- ✅ 显性冲突: 直接对立/冲突
- ⚠️ 隐性冲突: 潜在矛盾/铺垫
- ❌ 无冲突: 纯描写/介绍
**输出格式**:
```
### ⚡ 开篇冲突: [✅/⚠️/❌]
**前10秒内容**:
> [引用开篇场景内容]
**冲突分析**:
✅ 有明确冲突: [描述冲突类型]
⚠️ 冲突不够明显: [指出问题]
❌ 无冲突: [指出问题]
**改进建议**(如果不达标):
- [具体建议1]
- [具体建议2]
**示例**:
❌ 原: "主角走在街上,天气很好"
✅ 改: "主角狂奔,身后追着一群人"
```
#### 检查项4: 钩子质量
**规则**:
结尾必须有动作/反转,而非情绪结束
**检查方法**:
1. 提取"## 【钩子结尾】"部分
2. 分析钩子类型:
- ✅ 动作钩子: 主角做了关键动作(悬念)
- ✅ 反转钩子: 出现意外/新信息
- ✅ 升级钩子: 更强对手/更大危机
- ⚠️ 对话钩子: 只有台词,无动作
- ❌ 情绪钩子: "叹气"/"沉默"/"陷入思考"
**输出格式**:
```
### 🎣 钩子质量: [✅/⚠️/❌]
**钩子类型**: [动作/反转/升级/对话/情绪]
**钩子内容**:
> [引用钩子部分]
**强度评估**: [强/中/弱]
**评估**:
✅ 钩子有力,[描述为什么]
⚠️ 钩子中等,[指出不足]
❌ 钩子无力,[指出问题]
**改进建议**(如果不达标):
[根据风格给出具体改进建议]
**沙雕风格钩子示例**:
❌ 弱: "主角尴尬地笑了"
✅ 强: "突然,老板拿出一套恐龙服:'既然你喜欢,就穿一周吧'"
**热血风格钩子示例**:
❌ 弱: "主角握紧拳头"
✅ 强: "主角冲向敌人,拳头发光 - 定格画面"
**甜宠风格钩子示例**:
❌ 弱: "女主脸红了"
✅ 强: "女主拉住男主袖子:'别走...'"
**悬疑风格钩子示例**:
❌ 弱: "主角陷入思考"
✅ 强: "主角看到照片上的日期 - 那是一周后"
```
#### 检查项5: 禁止内容
**规则**:
不能包含以下内容:
- ❌ 心理描写: "心想"/"暗道"/"觉得"/"想到"
- ❌ 解释台词: "你要知道"/"其实"/"让我告诉你"
- ❌ 大段独白: 超过3句连续台词
- ❌ 书面语: "然而"/"但是"/"因此"(应改为口语)
**检查方法**:
使用关键词匹配+人工确认
**输出格式**:
```
### 🚫 禁止内容检查: [✅/❌]
**检查结果**:
✅ 未发现禁止内容
❌ 发现以下问题:
1. **心理描写** (X处):
- 第X行: "他心想..."
- 第X行: "她觉得..."
2. **解释台词** (X处):
- 第X行: "你要知道..."
- 第X行: "其实..."
3. **书面语** (X处):
- 第X行: "然而" → 改为"但是"或"可是"
- 第X行: "因此" → 改为"所以"
**必须修改**: 这些内容不符合漫剧标准,必须删除或改写
```
#### 检查项6: 口语化和细节
**规则**:
- 台词应口语化(加语气词)
- 动作应有情绪细节
**检查示例**:
| 类型 | ❌ 不好 | ✅ 更好 |
|------|--------|--------|
| 语气词 | "完了" | "完犊子喽" |
| 语气词 | "你怎么敢" | "你特么怎么敢" |
| 细节 | "他很紧张" | "手指捏着围裙边,嘴角抽搐" |
| 细节 | "她很生气" | "眼睛瞪得溜圆,拳头握到咯咯响" |
**输出格式**:
```
### 🎨 口语化和细节: [优秀/良好/一般]
**口语化评估**:
[分析台词的口语化程度]
**细节评估**:
[分析情绪细节的丰富度]
**可优化位置** (可选):
- 第X行: "[原文]" → 建议改为"[优化版]"
- 第X行: "[原文]" → 建议改为"[优化版]"
```
### 步骤4: 生成总体评分
**评分规则**:
- 时长控制: 20分
- 对白数量: 20分
- 开篇冲突: 20分
- 钩子质量: 20分
- 禁止内容: 10分(有即扣分)
- 口语化细节: 10分
**总分**: 100分
**评级**:
- 90-100分: ⭐⭐⭐⭐⭐ 优秀
- 70-89分: ⭐⭐⭐⭐ 良好
- 50-69分: ⭐⭐⭐ 及格(需改进)
- 30-49分: ⭐⭐ 不及格(需大改)
- 0-29分: ⭐ 不合格(需重写)
**输出格式**:
```markdown
---
## 📊 总体评估
### 评分: {XX}/100
### 评级: ⭐⭐⭐⭐⭐ [评级文字]
### 各项得分:
- ⏱ 时长控制: {XX}/20
- 💬 对白数量: {XX}/20
- ⚡ 开篇冲突: {XX}/20
- 🎣 钩子质量: {XX}/20
- 🚫 禁止内容: {XX}/10
- 🎨 口语化细节: {XX}/10
---
## 🎯 综合建议
### 优点:
- [列举2-3个做得好的方面]
### 需要改进:
- [列举具体需要改进的方面,按优先级排序]
### 是否可用:
✅ **可以直接使用** (90+分)
⚠️ **建议优化后使用** (70-89分)
❌ **必须修改后使用** (50-69分)
❌ **建议重写** (<50分)
```
### 步骤5: 给出具体改进方案
**如果评分<90分**,必须给出可执行的改进方案:
```markdown
---
## 🔧 改进方案
### 优先级1: 必须修改(影响可用性)
**问题1: [具体问题]**
- 当前状态: [问题描述]
- 修改建议: [具体怎么改]
- 修改位置: 第X行
**问题2: [具体问题]**
...
### 优先级2: 建议优化(提升质量)
**优化1: [具体方面]**
- 当前状态: [描述]
- 优化建议: [具体怎么改]
**优化2: [具体方面]**
...
### 优先级3: 可选优化(锦上添花)
**可选1: [具体方面]**
- 优化建议: [具体怎么改]
---
## 🚀 下一步
**如果评分≥70**:
1️⃣ 按优先级修改问题
2️⃣ 重新运行 /quality-check-comic 验证
3️⃣ 通过后,继续下一集或导出
**如果评分<70**:
1️⃣ 建议重新生成这一集
2️⃣ 或按改进方案大幅修改
3️⃣ 修改后必须重新检查
运行 /polish --type comic 可以自动执行部分优化
```
---
## 批量检查模式
如果用户运行 `/quality-check-comic --all`,检查所有已生成的集数:
**输出格式**:
```markdown
# 漫剧质量批量检查报告
## 📋 检查概览
- 总集数: {X}
- 通过数: {X} (≥70分)
- 需改进: {X} (50-69分)
- 不合格: {X} (<50分)
---
## 各集评分
| 集数 | 评分 | 评级 | 主要问题 | 建议 |
|------|------|------|---------|------|
| 第1集 | 85 | ⭐⭐⭐⭐ | 对白偏多 | 优化 |
| 第2集 | 92 | ⭐⭐⭐⭐⭐ | - | 通过 |
| 第3集 | 68 | ⭐⭐⭐ | 钩子无力 | 修改 |
| 第4集 | 45 | ⭐⭐ | 超时+无冲突 | 重写 |
...
---
## 🎯 批量改进建议
### 共性问题:
[列出多集都存在的问题]
### 最佳范例:
第{X}集(评分{XX})可作为参考范例
### 建议处理顺序:
1. 先修改不合格集(<50分): [列出集数]
2. 再优化需改进集(50-69分): [列出集数]
3. 最后微调通过集(70-89分): [列出集数]
```
---
## 错误处理
### 情况1: 未找到剧本文件
```
❌ 未找到剧本文件
请先运行 /adapt-comic 生成漫剧剧本
或指定剧本文件:
/quality-check-comic comic-scripts/episode-1.md
```
### 情况2: 剧本格式无法识别
```
⚠️ 剧本格式异常
文件: {file_path}
问题:
- [列出格式问题]
建议:
1. 检查是否使用标准剧本格式
2. 或重新运行 /adapt-comic 生成
```
---
## 常见问题应对
### Q: "评分只有60分,还能用吗?"
✅ "60分说明有一定质量,但不推荐直接使用。主要问题是[具体问题]。如果按改进方案修改,应该能达到70分以上。是否查看详细改进方案?"
### Q: "对白超过5句,但我觉得都很重要怎么办?"
✅ "漫剧的核心是'1-2分钟快节奏',对白过多会拖慢节奏。建议:
1. 删减解释性台词(观众能看懂的不用说)
2. 把多句合并成一句
3. 用动作/表情代替台词
我可以帮你分析哪些台词可以删减?"
### Q: "钩子评分低,怎么改进?"
✅ "钩子的关键是'让人想看下一集'。你的结尾是[当前结尾],建议:
- 如果是沙雕风格: 加一个反差/荒诞的元素
- 如果是热血风格: 在动作最高潮时定格
- 如果是甜宠风格: 在互动最甜的点停住
- 如果是悬疑风格: 抛出新线索/反转
需要具体示例吗?"
---
## 禁止行为
- ❌ 不要给出模糊建议("建议优化")
- ❌ 不要忽略明显问题
- ❌ 不要对不合格剧本说"还行"
- ❌ 不要建议增加内容(除非时长过短)
- ❌ 不要建议增加对白(只能减少)
---
## 成功标准
检查完成后,用户应该:
- ✅ 了解剧本的具体得分(量化)
- ✅ 知道哪些方面达标/不达标
- ✅ 获得可执行的改进方案(具体到行)
- ✅ 明确下一步该做什么(修改/重写/通过)
---
description: 漫剧选题检查 - 评估小说是否适合改编为漫剧
argument-hint: <novel-file>
allowed-tools: Read(//projects/*/novel/*), Read(//projects/*/import/*)
scripts:
sh: scripts/bash/select-novel.sh
ps1: scripts/powershell/select-novel.ps1
---
# /select-novel - 漫剧选题检查
## AI 角色
你是一位专业的漫剧选题顾问。你的职责是**根据AI漫剧制作完整流程文档的"五大核心筛选标准",评估小说是否适合改编为漫剧**。
---
## 核心原则
**五大核心筛选标准**(来自《AI漫剧制作完整流程》文档2.1):
### ✅ 标准1: 数据基础达标
- 评分 ≥ 8.0
- 在读人数 ≥ 1万
### ✅ 标准2: 开篇吸引力强
- 前3句话内有冲突
- 在成熟套路框架内做"微创新"
### ✅ 标准3: 主线清晰明确
- 剧情逻辑连贯,无多线混乱
- 主线目标单一
### ✅ 标准4: 情绪衔接流畅
- 开篇冲突需连贯,无"情绪断层"
### ✅ 标准5: 适配漫剧风格
- 热血战斗型:动作冲突多
- 治愈日常型:细节感强
- 悬疑推理型:开篇留伏笔
- 沙雕搞笑型:反差冲突足
---
## 工作流程
### 步骤1: 获取小说文件
调用Bash脚本获取小说文件路径:
- 如果用户提供了参数,使用指定文件
- 否则使用 novel/original.txt
**如果脚本返回错误 `NO_FILE`**:
```
未找到小说文件。请先运行以下命令之一:
1. /import - 导入新小说
2. /select-novel <文件路径> - 指定要检查的小说文件
示例:
/select-novel import/my-novel.txt
```
### 步骤2: 读取小说开篇
**重要**: 只读取小说开篇内容(前5000字)进行评估。
使用Read工具读取文件,提取:
- 前3句话(用于评估开篇冲突)
- 前5000字(用于评估整体风格)
### 步骤3: 五大标准逐项评估
#### 评估标准1: 数据基础
**如果用户提供了评分和在读数据**:
- ✅ 评分≥8.0 且 在读≥1万 → 通过
- ⚠️ 评分7.0-8.0 或 在读5千-1万 → 勉强达标
- ❌ 评分<7.0 或 在读<5千 → 不达标
**如果用户未提供数据**:
```
### 📊 标准1: 数据基础
由于未提供小说的评分和在读人数,无法评估此项。
如果这是网文平台的小说,请告诉我:
- 小说名称
- 评分(如有)
- 在读人数或收藏数
如果是原创小说,可以跳过此项检查。
```
#### 评估标准2: 开篇吸引力
**必须做**:
1. 提取前3句话
2. 分析是否包含冲突:
- ✅ 有明确冲突(人物矛盾/危机/意外)
- ⚠️ 有潜在冲突但不明显
- ❌ 无冲突(纯描写/铺垫)
**输出格式**:
```
### ⚡ 标准2: 开篇吸引力
**前3句话**:
> [引用原文前3句]
**冲突分析**:
✅/⚠️/❌ [判断结果]
[具体分析: 冲突类型、强度、出现位置]
**改进建议**(如果不达标):
- [具体建议1]
- [具体建议2]
```
#### 评估标准3: 主线清晰度
**分析前5000字**:
1. 识别主线目标:
- 主角是谁?
- 主角想要什么?
- 主要障碍是什么?
2. 检查多线情况:
- ✅ 单一主线,支线简洁
- ⚠️ 有2-3条支线但不混乱
- ❌ 多线交织,主线不清
**输出格式**:
```
### 🎯 标准3: 主线清晰度
**主线识别**:
- 主角: [姓名/身份]
- 目标: [主角想要什么]
- 障碍: [主要冲突/反派]
**多线检查**:
✅/⚠️/❌ [判断结果]
[具体分析: 主线占比、支线数量、是否混乱]
```
#### 评估标准4: 情绪衔接
**分析前5000字的情绪曲线**:
1. 识别情绪转折点(至少3个)
2. 检查转折是否自然:
- ✅ 转折有因果,情绪连贯
- ⚠️ 转折有些突兀但可接受
- ❌ 情绪断层明显
**输出格式**:
```
### 🎭 标准4: 情绪衔接
**情绪曲线**:
[开篇] → [第1转折] → [第2转折] → [第3转折]
**衔接分析**:
✅/⚠️/❌ [判断结果]
[具体分析: 转折自然度、节奏感]
```
#### 评估标准5: 漫剧风格适配
**识别小说类型并评估**:
| 类型 | 适配度 | 关键要素 |
|------|--------|---------|
| 热血战斗 | ⭐⭐⭐⭐⭐ | 动作冲突多、画面感强 |
| 打脸爽文 | ⭐⭐⭐⭐⭐ | 爽点密集、节奏快 |
| 沙雕搞笑 | ⭐⭐⭐⭐⭐ | 反差大、夸张强 |
| 甜宠言情 | ⭐⭐⭐⭐ | 对话多、互动好 |
| 悬疑推理 | ⭐⭐⭐ | 需简化推理过程 |
| 玄幻仙侠 | ⭐⭐⭐ | 场景宏大、需AI能力强 |
| 文艺治愈 | ⭐⭐ | 内心戏多、难外化 |
**输出格式**:
```
### 🎨 标准5: 漫剧风格适配
**小说类型**: [识别出的类型]
**适配度**: ⭐⭐⭐⭐⭐ (X/5)
**适配分析**:
✅ 优势:
- [列举2-3个适合漫剧的特点]
⚠️ 挑战:
- [列举1-2个需要注意的难点]
**推荐风格**: [沙雕/热血/甜宠/悬疑]
```
### 步骤4: 生成总体评分
**评分规则**:
- 每项标准: 通过=20分, 勉强=10分, 不通过=0分
- 总分 = 5项之和(最高100分)
**评级**:
- 90-100分: ⭐⭐⭐⭐⭐ 非常适合
- 70-89分: ⭐⭐⭐⭐ 适合
- 50-69分: ⭐⭐⭐ 勉强可行
- 30-49分: ⭐⭐ 需大幅改动
- 0-29分: ⭐ 不推荐
**输出格式**:
```
---
## 📊 总体评估
### 评分: XX/100
### 评级: ⭐⭐⭐⭐⭐ [评级文字]
### 各项得分:
- ✅ 数据基础: XX/20
- ⚡ 开篇吸引力: XX/20
- 🎯 主线清晰度: XX/20
- 🎭 情绪衔接: XX/20
- 🎨 风格适配: XX/20
### 综合建议:
[根据评分给出建议]
**⭐⭐⭐⭐⭐ (90+)**: 非常适合改编为漫剧,可直接进入改编流程。建议使用 /adapt-comic 开始改编。
**⭐⭐⭐⭐ (70-89)**: 适合改编,但需要在改编时注意以下方面:
- [具体注意事项1]
- [具体注意事项2]
**⭐⭐⭐ (50-69)**: 勉强可行,需要大幅调整:
- [必须调整的方面1]
- [必须调整的方面2]
**⭐⭐ (30-49)**: 不太适合,除非:
- [先决条件1]
- [先决条件2]
**⭐ (0-29)**: 不推荐改编为漫剧。建议:
- 重新选择更适合的小说
- 或考虑改编为其他形式(长剧/电影)
```
### 步骤5: 给出下一步建议
**根据评分给出具体行动建议**:
```
---
## 🚀 下一步行动
[根据评分选择建议]
### 如果评分 ≥ 70:
现在可以开始改编流程:
1️⃣ **直接改编**:
运行 /adapt-comic 开始改编为漫剧剧本
2️⃣ **先深入分析**:
运行 /analyze 详细分析小说结构(如果是长篇小说)
3️⃣ **明确改编目标**:
运行 /spec 明确漫剧规格(集数、时长、风格)
### 如果评分 50-69:
建议先优化小说:
1️⃣ **优化开篇**:
- [具体优化建议]
2️⃣ **简化主线**:
- [具体优化建议]
3️⃣ **调整节奏**:
- [具体优化建议]
优化后重新运行 /select-novel 检查
### 如果评分 < 50:
建议:
- 重新选择小说
- 或考虑原创剧本(运行 /idea 开始构思)
```
---
## 错误处理
### 情况1: 未找到小说文件
```
❌ 未找到小说文件
请先运行以下命令之一:
1. /import - 导入新小说
2. /select-novel <文件路径> - 指定小说文件
示例:
/select-novel import/my-novel.txt
/select-novel novel/original.txt
```
### 情况2: 文件为空或无法读取
```
❌ 无法读取小说内容
文件路径: {file_path}
可能原因:
- 文件为空
- 文件编码问题
- 权限不足
建议:
1. 检查文件是否正确
2. 重新运行 /import 导入小说
```
---
## 常见问题应对
### Q: "评分只有60分,还能改编吗?"
✅ "60分说明小说具备一定基础,但需要在改编时重点优化。根据评估报告,主要问题是[具体问题]。如果你愿意在改编时大幅调整这些方面,仍然可以尝试。是否继续?"
### Q: "我的原创小说没有评分和在读数据怎么办?"
✅ "原创小说可以跳过数据基础检查。我们主要关注其他4项标准(开篇、主线、情绪、风格)。这些标准总分80分,如果达到56分以上(70%),就适合改编。"
### Q: "开篇没有冲突,但后面很精彩怎么办?"
✅ "漫剧最关键的是'前10秒吸引力'。如果开篇没有冲突,观众会直接划走。建议:
1. 调整开篇顺序(把后面的冲突提前)
2. 或重写开篇(保留原有风格但增加钩子)
需要我帮你设计开篇改进方案吗?"
---
## 禁止行为
- ❌ 不要仅基于印象评估,必须引用具体段落
- ❌ 不要过度主观,要基于标准打分
- ❌ 不要直接拒绝改编,要给出改进建议
- ❌ 不要评估超过开篇5000字的内容(节约token)
- ❌ 不要承诺"一定能成功",只说"适合度"
---
## 成功标准
评估完成后,用户应该:
- ✅ 了解小说的漫剧适配度(量化评分)
- ✅ 知道具体哪些方面适合/不适合
- ✅ 获得明确的下一步行动建议
- ✅ 如果需要改进,知道具体改进方向
+81
-0

@@ -10,2 +10,83 @@ # Scriptify 更新日志

## [0.7.0] - 2025-11-02
### 🆕 新增 - 漫剧创作支持
#### 新增命令 (3个)
**1. `/select-novel` - 漫剧选题检查**
- 五大核心筛选标准自动评估
- 0-100分量化评分系统
- 具体改进建议和适配度分析
- 文件: `templates/commands/select-novel.md` + `scripts/bash/select-novel.sh`
**2. `/adapt-comic` - 漫剧改编**
- 5步改编法(拆书→细纲→改写→润色→调整)
- 支持4种风格(沙雕/热血/甜宠/悬疑)
- 自动/互动两种模式
- 内置1-2分钟黄金结构标准
- 文件: `templates/commands/adapt-comic.md` + `scripts/bash/adapt-comic.sh`
**3. `/quality-check-comic` - 漫剧质量检查**
- 6大维度自动化检查(时长/对白/开篇/钩子/禁止内容/口语化)
- 详细评分和改进方案
- 支持单集检查和批量检查(`--all`)
- 文件: `templates/commands/quality-check-comic.md` + `scripts/bash/quality-check-comic.sh`
#### 增强功能 (2个)
**4. `/import` - 增加漫剧分析**
- 基于字数的漫剧集数建议
- 漫剧题材适配度评估(5星评级)
- 智能引导选择改编类型(漫剧 vs 传统剧本)
**5. `/polish` - 新增漫剧专项润色**
- 新增 `--focus comic` 选项
- 4大润色重点: 去AI味、补细节、留画面空白、强化钩子
- 完整的漫剧润色检查清单
### 📚 文档更新
- 更新 README.md,新增漫剧创作功能介绍
- 新增漫剧快速上手流程示例
- 更新命令列表(20个→23个)
- 更新版本号为 v0.7.0
### 🎯 核心价值
将《AI漫剧制作完整流程》文档的专业方法论,内置到Slash Command中:
- ✅ 五大核心筛选标准(选题阶段)
- ✅ 5步改编法(改编阶段)
- ✅ 1-2分钟黄金结构(时长控制)
- ✅ 4种风格的钩子设计模式
- ✅ 去AI味技巧(润色阶段)
- ✅ 自动化质量检查清单
### 🔗 生态定位
明确与 Storyboardify 的分工:
- **Scriptify**: 小说 → 漫剧剧本
- **Storyboardify**: 剧本 → 分镜脚本
- 清晰分工,无重复功能
### 📊 统计数据
- **新增文件**: 6个(3个命令模板 + 3个Bash脚本)
- **修改文件**: 3个(import.md, polish.md, README.md)
- **新增代码**: ~3000行
- **测试状态**: ✅ 所有核心脚本测试通过
### 🚀 快速体验
```bash
# 完整漫剧创作流程
scriptify /import # 导入小说
scriptify /select-novel # 选题检查(评分)
scriptify /adapt-comic --style 沙雕 --episodes 60 --auto
scriptify /quality-check-comic --all # 批量质量检查
scriptify /polish --focus comic # 专项润色
```
---
## [0.6.1] - 2025-10-30

@@ -12,0 +93,0 @@

+5
-3
{
"name": "ai-scriptify",
"version": "0.6.1",
"version": "0.7.0",
"type": "module",
"description": "AI 驱动的剧本创作工具 - 专注原创剧本、小说改编、短剧优化",
"description": "AI 驱动的剧本创作工具 - 原创剧本、小说改编、漫剧创作",
"keywords": [

@@ -14,3 +14,5 @@ "screenplay",

"剧本",
"小说改编"
"小说改编",
"漫剧",
"comic-drama"
],

@@ -17,0 +19,0 @@ "author": "Scriptify Team",

# Scriptify - AI 驱动的剧本创作工具
> **版本**: v0.6.0
> **状态**: ✅ 核心功能已实现
> **版本**: v0.7.0
> **状态**: ✅ 核心功能已实现 + 🆕 漫剧创作支持
> **定位**: 专注剧本创作阶段的AI辅助工具
**核心价值**: 帮助创作者从零写好剧本,小说改编剧本,短剧/短视频剧本优化
**核心价值**: 帮助创作者从零写好剧本,小说改编剧本,短剧/短视频剧本优化,**漫剧快速创作**

@@ -42,4 +42,10 @@ ## ⚠️ 产品边界

### 3. 漫剧创作 (🆕 v0.7.0)
- **选题检查**: 五大核心标准评估,0-100分量化评分
- **快速改编**: 5步改编法,1-2分钟黄金结构
- **质量保障**: 自动化检查6大维度,具体改进建议
- **专项润色**: 去AI味、补细节、强化钩子
- **4种风格**: 沙雕/热血/甜宠/悬疑
### 3. 短剧/短视频优化
### 4. 短剧/短视频优化
- 标准剧本格式输出

@@ -99,2 +105,4 @@ - 专业术语规范化

#### 原创剧本流程
**使用 Slash Commands 完成创作流程**:

@@ -122,2 +130,38 @@ ```bash

#### 🆕 漫剧创作流程 (快速上手)
```bash
# 1. 导入小说
scriptify /import
# AI会自动评估是否适合漫剧,并引导选择改编类型
# 2. 选题检查(五大核心标准)
scriptify /select-novel
# 输出: 0-100分评分 + 具体改进建议
# 3. 快速改编(假设评分≥70分)
scriptify /adapt-comic --style 沙雕 --episodes 100 --auto
# 或互动模式:
scriptify /adapt-comic --style 热血 --episodes 80
# 4. 质量检查
scriptify /quality-check-comic
# 或批量检查:
scriptify /quality-check-comic --all
# 5. 专项润色(可选)
scriptify /polish --focus comic --episode 1
```
**示例工作流**:
```
小说(15万字)
→ /import → 建议50-80集漫剧
→ /select-novel → 评分85分,适合沙雕风格
→ /adapt-comic --style 沙雕 --episodes 60 --auto
→ /quality-check-comic --all → 50集通过,10集需优化
→ /polish --focus comic [针对需优化的集]
→ 完成! 可交给 Storyboardify 制作分镜
```
### 4. 导出剧本

@@ -151,3 +195,3 @@

### 小说改编 (7个)
- `/import` - 导入小说
- `/import` - 导入小说(支持漫剧分析)
- `/analyze` - 结构分析

@@ -160,3 +204,8 @@ - `/extract` - 提炼情节

### 漫剧创作 (🆕 3个)
- `/select-novel` - 漫剧选题检查(五大核心标准)
- `/adapt-comic` - 漫剧改编(5步改编法)
- `/quality-check-comic` - 漫剧质量检查(自动化评分)
---

@@ -245,4 +294,5 @@

**版本**: v0.6.0
**发布日期**: 2025-10-30
**状态**: ✅ 核心功能完成,专注剧本创作
**版本**: v0.7.0
**发布日期**: 2025-11-02
**状态**: ✅ 核心功能完成 + 🆕 漫剧创作支持
**新增**: 漫剧选题检查、改编、质量检查、专项润色

@@ -109,2 +109,4 @@ ---

#### 传统剧本改编
| 字数范围 | 改编难度 | 建议目标 | 说明 |

@@ -118,2 +120,12 @@ |---------|---------|---------|------|

#### 漫剧改编(1-2分钟/集)
| 字数范围 | 建议集数 | 说明 |
|---------|---------|------|
| < 5万字 | 20-30集 | 内容较少,需精简表达 |
| 5-15万字 | 50-80集 | 标准长度,适合漫剧 |
| 15-30万字 | 80-120集 | 需精简主线,删减支线 |
| 30-50万字 | 100-150集 | 只改编核心情节 |
| > 50万字 | 建议只改编主线 | 或分季制作 |
**给出初步评估**:

@@ -164,3 +176,3 @@

#### 适合改编的题材
#### 传统剧本改编 - 适合的题材

@@ -172,3 +184,3 @@ ✅ **情节性强**: 悬疑、推理、冒险、谍战

#### 有挑战的题材
#### 传统剧本改编 - 有挑战的题材

@@ -180,2 +192,29 @@ ⚠️ **内心戏多**: 文艺小说、心理小说

#### 漫剧改编 - 最适合的题材
⭐⭐⭐⭐⭐ **热血战斗型**: 玄幻、武侠、竞技、动作
- 动作冲突多、画面感强
- 爽点密集、节奏快
- 易于视觉化呈现
⭐⭐⭐⭐⭐ **打脸爽文型**: 系统流、重生、逆袭
- 爽点密集、反转多
- 节奏快、冲突强
- 适合短平快呈现
⭐⭐⭐⭐⭐ **沙雕搞笑型**: 无厘头、穿越、日常
- 反差大、夸张强
- 笑点密集
- 适合夸张表现
⭐⭐⭐⭐ **甜宠言情型**: 霸总、甜文、校园恋爱
- 对话多、互动好
- 糖点密集
- 情感表达直接
⭐⭐⭐ **悬疑推理型**: 悬疑、灵异、末世
- 需简化推理过程
- 保留悬念和反转
- 注重视觉氛围
**给出评估**:

@@ -244,16 +283,52 @@

询问用户改编目标:
```markdown
## 🚀 下一步
现在小说已经导入,建议按以下流程继续:
现在小说已经导入,请告诉我你想改编成什么?
1️⃣ **先运行 /analyze**
深入分析小说结构,识别主线、人物关系、关键情节点
### 选择改编类型:
2️⃣ **明确改编目标**
确定要改编成多少集、每集多长、什么平台
**1️⃣ 漫剧改编** (推荐)
- 1-2分钟/集,快节奏
- 适合题材: [根据题材评估结果给出建议]
- 下一步: 运行 /select-novel 检查漫剧适配度
- 然后: 运行 /adapt-comic 直接生成漫剧剧本
3️⃣ **提炼核心情节**
使用 /extract 筛选必须保留的核心情节
**2️⃣ 传统剧本改编**
- 传统剧本格式
- 下一步流程:
1. /analyze - 深入分析小说结构
2. /extract - 提炼核心情节
3. /compress - 压缩到目标时长
4. /script - 生成剧本
你想选择哪种改编方式?
```
**根据用户选择给出具体指导**:
如果选择漫剧:
```
太好了!这部小说{适合/不太适合}改编为漫剧。
建议流程:
1. 运行 /select-novel 进行漫剧选题检查
2. 通过检查后,运行 /adapt-comic --style [风格] --episodes [集数]
3. 生成后运行 /quality-check-comic 检查质量
要现在开始检查吗? (运行 /select-novel)
```
如果选择传统剧本:
```
明白了。我们按传统流程进行改编。
建议流程:
1. 运行 /analyze 分析小说结构
2. 运行 /extract 提炼核心情节
3. 运行 /compress 压缩到目标时长
4. 运行 /script 生成剧本
让我们从 /analyze 开始吧?

@@ -260,0 +335,0 @@ ```

---
description: 剧本润色 - 最终精修优化
argument-hint: --episode N [--focus dialogue|action|rhythm|all] [--project 项目名]
allowed-tools: Read(//projects/**), Write(//projects/*/episodes/*)
description: 剧本润色 - 最终精修优化(支持漫剧专项)
argument-hint: --episode N [--focus dialogue|action|rhythm|comic|all] [--project 项目名]
allowed-tools: Read(//projects/**), Write(//projects/*/episodes/*), Edit(//projects/*/comic-scripts/*)
scripts:

@@ -598,6 +598,240 @@ sh: scripts/bash/polish.sh

## 漫剧专项润色 (Focus: comic)
当使用 `--focus comic` 时,执行漫剧专项优化,遵循《AI漫剧制作完整流程》文档的润色标准。
### 漫剧润色的4个重点
#### 重点1: 加口语化语气词
**目标**: 去掉AI味,让对话更真实
**常见AI味及改法**:
| AI味 | 润色后 |
|------|--------|
| "完了" | "完犊子喽" |
| "你怎么敢" | "你特么怎么敢" |
| "真是令人震惊" | "我去,这也太离谱了吧" |
| "不可能" | "不可能吧" / "开玩笑吧" |
| "你好过分" | "你太过分了吧" |
| "我很生气" | "我气死了" |
**检查方法**:
- 找出所有"太正式"的对话
- 加入语气词: "啊"/"吧"/"呢"/"嘛"/"呀"
- 加入口头禅: "我去"/"卧槽"/"哎呀"/"哇"
**润色示例**:
```markdown
❌ AI味:
**主角**: 这件事我不能接受。
✅ 润色后(沙雕风格):
**主角**: 这事儿我不能忍啊!
✅ 润色后(热血风格):
**主角**: 老子不答应!
✅ 润色后(甜宠风格):
**主角**: 这...这怎么行嘛...
```
#### 重点2: 补情绪细节
**目标**: 用具体动作/表情代替抽象形容
**常见问题及改法**:
| 抽象表达 | 具体细节 |
|---------|---------|
| "他很紧张" | "手指捏着围裙边,嘴角抽搐" |
| "她很生气" | "眼睛瞪得溜圆,拳头握到咯咯响" |
| "他很尴尬" | "额头冒汗,眼神飘忽" |
| "她很开心" | "嘴角上扬,眼睛弯成月牙" |
| "他很害怕" | "双腿发抖,后退半步" |
**润色示例**:
```markdown
❌ 原版(抽象):
*画面: 主角很紧张*
✅ 润色后(具体):
*画面: 主角额头冒汗,手不停搓着衣角*
*动作: 咽了咽口水,眼神躲闪*
```
#### 重点3: 留画面空白
**目标**: 不要"满打满算",留呼吸空间
**技巧**: 在关键转折处,插入1-2秒的画面空白
**润色前**:
```markdown
## 场景1
**角色A**: [台词]
## 场景2
**角色B**: [台词]
## 场景3
**角色A**: [台词]
```
**润色后**:
```markdown
## 场景1
**角色A**: [台词]
*画面空白 1秒: 角色B表情变化,由笑到凝重*
## 场景2
**角色B**: [台词]
*动作: 攥紧拳头*
*画面空白 0.5秒: 特写角色A的手,微微颤抖*
## 场景3
**角色A**: [台词]
```
**画面空白的作用**:
- 强调情绪转折
- 给观众反应时间
- 增加戏剧张力
- 防止信息过载
#### 重点4: 强化钩子
**目标**: 让结尾更有吸引力,必须有动作/反转
**钩子弱→钩子强的改法**:
**沙雕搞笑风格**:
```markdown
❌ 弱钩子:
**主角**: (尴尬地笑了)
*效果: 尴尬*
✅ 强钩子:
*画面: 突然,老板拿出一套恐龙服*
**老板**: 既然你喜欢,就穿一周吧。
**主角**: (石化)???
*效果: 定格,黑屏*
```
**热血爽文风格**:
```markdown
❌ 弱钩子:
**主角**: (握紧拳头)
*效果: 决心的眼神*
✅ 强钩子:
**主角**: (冲向敌人)
*画面: 拳头发光,即将击中敌人脸部 - 定格*
*效果: 白光闪烁*
**[旁白]**: 这一拳,改变了一切...
```
**甜宠言情风格**:
```markdown
❌ 弱钩子:
**女主**: (脸红)
✅ 强钩子:
*画面: 女主鼓起勇气,拉住男主衣袖*
**女主**: (小声)别走...
*画面: 男主停下,回头,嘴角上扬*
**男主**: (心想)终于主动了...
```
**悬疑推理风格**:
```markdown
❌ 弱钩子:
**主角**: (陷入思考)
✅ 强钩子:
*画面: 主角翻开笔记本,看到日期*
**主角**: (瞳孔放大)这是...一周后?!
*效果: 闪电音效,黑屏*
```
### 漫剧润色检查清单
完成润色后,逐项检查:
```markdown
## 漫剧润色检查清单
### ✅ 口语化
- [ ] 所有对话都加了语气词
- [ ] 没有"AI味"词汇("令人"/"然而"/"倘若")
- [ ] 对话符合角色性格和场景
### ✅ 情绪细节
- [ ] 所有抽象情绪都改为具体动作/表情
- [ ] 没有"他很XX"的描写
- [ ] 细节丰富但不啰嗦
### ✅ 画面空白
- [ ] 关键转折处有画面空白(1-2秒)
- [ ] 没有"满打满算"的节奏
- [ ] 留给观众反应时间
### ✅ 钩子强化
- [ ] 结尾有明确动作(不是情绪)
- [ ] 结尾有反转/悬念/升级
- [ ] 让人想看下一集
### ✅ 时长控制
- [ ] 润色后时长仍在90-180秒(第1集可240秒)
- [ ] 如果超时,已删减冗余内容
- [ ] 如果过短,已补充必要内容
```
### 漫剧润色报告
```markdown
## 📝 漫剧润色报告 - 第X集
### 润色统计
- 加语气词: {X}处
- 补情绪细节: {X}处
- 添加画面空白: {X}处
- 强化钩子: 是/否
### 润色前后对比
**口语化提升**:
- 润色前: [原对话示例]
- 润色后: [润色对话示例]
**细节丰富度**:
- 润色前: {X}个具体细节
- 润色后: {X}个具体细节 (+{X})
**钩子强度**:
- 润色前: [原钩子] (强度: 弱/中/强)
- 润色后: [新钩子] (强度: 弱/中/强)
### 质量评分
| 维度 | 润色前 | 润色后 | 提升 |
|------|-------|-------|------|
| 口语化 | {X}/10 | {X}/10 | +{X} |
| 细节感 | {X}/10 | {X}/10 | +{X} |
| 节奏感 | {X}/10 | {X}/10 | +{X} |
| 钩子强度 | {X}/10 | {X}/10 | +{X} |
### 建议
✅ 润色完成,可以进入分镜阶段
💡 建议运行 /quality-check-comic 再次验证
```
---
## 与其他命令配合
- **前置**: `/review` (先评估,找问题)
- **前置**: `/quality-check-comic` (漫剧专项质量检查)
- **配合**: `/diff` (对比润色前后)
- **后续**: `/export` (导出最终版)