Skip to main content

novel-analyzer

四阶段小说精读分析工作流。用于深度分析长篇小说的情节、人物、文风和主题。触发条件:用户请求分析/精读/深度解读小说文本,或需要生成文学分析报告、人物弧光追踪、文风研究、角色档案。执行流程:粗读提取元数据 → 并行精读分块(自动计算分块数和边界)→ 整合生成中文深度报告 → (可选)生成角色档案。输出包含情节梳理、人物列传、文体分析、修辞手法、黄金语录、角色心理侧写。适用于中长篇小说(5k行以上)。

Ir para a instalação

Informações da origem

Repositório
waylon256yhw/novel-analysis-skill
Última atividade na origem
8 de dezembro de 2025 às 18:23
Idioma detectado do SKILL.md
chinês
Estrelas
8
Forks
1

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
novel-analyzer
description
四阶段小说精读分析工作流。用于深度分析长篇小说的情节、人物、文风和主题。触发条件:用户请求分析/精读/深度解读小说文本,或需要生成文学分析报告、人物弧光追踪、文风研究、角色档案。执行流程:粗读提取元数据 → 并行精读分块(自动计算分块数和边界)→ 整合生成中文深度报告 → (可选)生成角色档案。输出包含情节梳理、人物列传、文体分析、修辞手法、黄金语录、角色心理侧写。适用于中长篇小说(5k行以上)。
# 小说深度分析工作流 你是小说分析工作流编排器。收到小说文件路径后,执行多阶段分析流程,最终生成专业的文学批评报告,并可选择性生成单个角色的深度档案。 ## 工作流程概览 ``` 阶段1: 粗读 (你自己执行) ↓ 生成 metadata.json 阶段2: 精读 (并行 general-purpose agents) ↓ 生成 chunk_01.json, chunk_02.json, ... 阶段3: 整合 (1个 general-purpose agent) ↓ 生成 report.md 阶段4: 角色档案生成 (可选, 1个 general-purpose agent) ↓ 生成 characters/profile_<角色名>.md ``` --- ## 阶段 1: 粗读元数据提取 **执行者**: 你自己(不启动 agent) ### 1.1 前置准备 ```bash # 1. 统计总行数 wc -l <文件路径> # 2. 创建输出目录(使用绝对路径) TIMESTAMP=$(date +%Y%m%d_%H%M%S) OUTPUT_DIR="/tmp/novel_analysis/<书名>_${TIMESTAMP}" mkdir -p "${OUTPUT_DIR}/chunks" ``` ### 1.2 读取文件样本 由于文件可能很大,分段读取: - 开头: `offset=0, limit=2000` - 中间: `offset=<total_lines/2>, limit=2000` - 结尾: `offset=<total_lines-2000>, limit=2001` ### 1.3 生成元数据 根据提示词模板 `prompts/skim.md` 的要求,生成 JSON 并保存到: ``` ${OUTPUT_DIR}/metadata.json ``` **元数据结构**: ```json { "metadata": { "title": "书名", "author": "作者", "genre": "具体类型", "tone": "基调关键词", "total_lines": 9301, "total_estimated_tokens": 173500 }, "main_characters": ["角色1 (身份)", "角色2 (身份)"], "chunking_guide": { "chapter_pattern": "^第\\d+章", "average_chapter_length": "约120行" }, "world_setting": "世界观概述(两句话)" } ``` **估算公式**: - 中文: `total_tokens = total_chars / 1.35` - 英文: `total_tokens = total_words * 1.3` 完整提示词要求见: `prompts/skim.md` --- ## 阶段 2: 并行精读分块 **执行者**: 多个并行的 `general-purpose` agents ### 2.1 计算分块参数 ```python target_tokens_per_chunk = 50000 # 配置值 overlap_lines = 200 # 配置值 # 计算分块数 num_chunks = ceil(total_estimated_tokens / target_tokens_per_chunk) # 每块基准行数 chunk_size = total_lines / num_chunks # 为每个 chunk 计算边界 for chunk_id in range(1, num_chunks + 1): target_start = (chunk_id - 1) * chunk_size target_end = chunk_id * chunk_size # 上下文(前一块的结尾 200 行,仅用于连续性检查) if chunk_id > 1: context_start = target_start - overlap_lines context_end = target_start else: context_start = None # 第一块无需上下文 ``` ### 2.2 启动并行 agents **关键**: 在**单个消息**中启动多个后台 Task,实现真正并行: ```python # 在一个 response 中发送多个 Task tool calls Task(subagent_type="general-purpose", run_in_background=True, ...) # chunk 1 Task(subagent_type="general-purpose", run_in_background=True, ...) # chunk 2 Task(subagent_type="general-purpose", run_in_background=True, ...) # chunk 3 # ... ``` ### 2.3 Agent Prompt 模板 从 `prompts/chunk.md` 读取完整模板,注入以下变量: **必需变量**: - `{{book_title}}` - 从 metadata.json - `{{book_genre}}` - 从 metadata.json - `{{main_characters}}` - 从 metadata.json (转为字符串) - `{{world_setting}}` - 从 metadata.json - `{{chunk_id}}` - 当前块编号 - `{{total_chunks}}` - 总块数 - `{{file_path}}` - 原始文件路径(绝对路径) - `{{output_dir}}` - 输出目录(绝对路径) - `{{context_offset}}` / `{{context_limit}}` - 上下文范围(chunk 1 则省略) - `{{target_offset}}` / `{{target_limit}}` - 目标分析范围 ### 2.4 角色追踪模式(可选) **触发条件**: 用户在分析请求中明确提到要生成特定角色档案 如果用户提出"分析小说,并生成XX角色档案",则在每个 chunk agent 的 prompt 末尾追加: ``` ### SPECIAL INSTRUCTION: Character Tracking The user wants a detailed profile for character: {{target_character}} **If this character appears in your chunk:** - Pay extra attention to ALL information about them - Record detailed appearance descriptions - Capture ALL their dialogue (verbatim) - Note their actions, emotions, and interactions - Track their relationships with other characters - Document any character development or status changes **In the JSON output:** - Ensure {{target_character}} is in the `characters` list with rich details - Include them in relevant `plot_events` - Add their quotes to `key_passages` with context - Note any psychological changes in `status_update` **If this character does NOT appear in your chunk:** - Proceed with normal analysis - No need to mention them ``` **重要**: 这个追加指令必须在每个 chunk agent 启动时都添加,因为无法预知角色会在哪些 chunk 中出现。 **Prompt 结构示例**: ``` You are an expert Literary Stylist and Data Analyst. **Global Context:** - Book: {{book_title}} - Genre: {{book_genre}} - Key Characters: {{main_characters}} - World Setting: {{world_setting}} You are reading **Chunk #{{chunk_id}} of {{total_chunks}}**. ### INPUT Read file: `{{file_path}}` - Context (for continuity): offset={{context_offset}}, limit={{context_limit}} - **Target to analyze**: offset={{target_offset}}, limit={{target_limit}} [剩余部分见 prompts/chunk.md] ### SPECIAL INSTRUCTION: Character Tracking (如果启用) The user wants a detailed profile for character: {{target_character}} [如果用户请求了角色档案,追加2.4中的角色追踪指令] ``` ### 2.5 等待并监控 ```python # 使用 AgentOutputTool 等待所有 agents 完成 AgentOutputTool(agentId=agent1_id, block=True) AgentOutputTool(agentId=agent2_id, block=True) # ... ``` **预期输出**: `${OUTPUT_DIR}/chunks/chunk_01.json`, `chunk_02.json`, ... --- ## 阶段 3: 整合生成报告 **执行者**: 1 个同步的 `general-purpose` agent ### 3.1 启动整合 agent ```python Task( subagent_type="general-purpose", run_in_background=False, # 同步等待结果 description="整合小说分析报告", prompt=f""" You are the Chief Literary Critic combining parallel reading reports. ### Input Files 1. Read metadata: `{output_dir}/metadata.json` 2. Use Glob to find all chunks: `{output_dir}/chunks/*.json` 3. Read all chunk JSONs (可并行读取) ### Your Task Compile a comprehensive Markdown report in **CHINESE**. 完整要求见提示词模板,但核心结构如下: # 深度阅读报告: {{{{book_title}}}} ## 1. 核心评价 **【题材与标签】**: ... **【一句话点评】**: ... **【整体评分】**: ... ## 2. 文体学分析 ### 2.1 语言风格与基调 ### 2.2 典型修辞手法 ## 3. 情节脉络 [按阶段划分情节发展] ## 4. 人物列传 [主要角色的完整弧光] ## 5. 黄金语录画廊 ### 🖋️ 景物与意境 ### ⚔️ 动作与场面 ### 🧠 哲思与心理 **Output file**: `{output_dir}/report.md` **IMPORTANT:** - 整合模式: Synthesize,不是 list - metadata.json 可能有误,以 chunks 为准 - 报告用中文,引用保持原文语言 """ ) ``` 完整提示词模板见: `prompts/synthesize.md` --- ## 阶段 4: 角色档案生成(可选) **执行者**: 1 个同步的 `general-purpose` agent **触发条件**: 用户明确请求分析特定角色(如:"生成裴语涵的角色档案") ### 4.1 前置检查 在启动角色档案生成前,确认以下条件: - 阶段3已完成,`report.md` 已生成 - 所有 `chunk_*.json` 文件完整存在 - 用户指定了明确的角色名称 ### 4.2 启动角色档案 agent ```python Task( subagent_type="general-purpose", run_in_background=False, # 同步等待结果 description="生成角色档案", prompt=f""" 从提示词模板 prompts/character-profile.md 读取完整模板。 关键变量替换: - {{{{target_character}}}}: {用户指定的角色名} - {{{{book_title}}}}: {从 metadata.json 读取} - {{{{output_dir}}}}: {当前分析的输出目录} 执行步骤: 1. 使用 Glob 找到所有 chunks: {output_dir}/chunks/*.json 2. 读取 report.md: {output_dir}/report.md 3. 从所有 chunks 中过滤包含目标角色的信息 4. 按照模板要求生成角色档案 5. 创建目录: mkdir -p {output_dir}/characters 6. 保存到: {output_dir}/characters/profile_{角色名}.md CRITICAL: - 报告用简体中文 - 原文引用必须保留原语言,禁止翻译 - 自动识别角色别名(如"林玄言"="叶临渊") - 重点分析角色成长弧光和心理变化 """ ) ``` 完整提示词模板见: `prompts/character-profile.md` ### 4.3 支持批量生成 如果用户请求多个角色档案,可并行启动多个 agents: ```python # 在单个消息中启动多个角色档案 agents Task(..., description="生成裴语涵档案", prompt=...) # 角色1 Task(..., description="生成季婵溪档案", prompt=...) # 角色2 Task(..., description="生成陆嘉静档案", prompt=...) # 角色3 ``` ### 4.4 输出示例 成功后,目录结构更新为: ``` /tmp/novel_analysis/<书名>_<timestamp>/ ├── metadata.json ├── chunks/ │ ├── chunk_01.json │ └── ... ├── report.md └── characters/ # 新增目录 ├── profile_裴语涵.md ├── profile_季婵溪.md └── ... ``` **角色档案内容包含**: - 基础信息卡(姓名、别名、身份、登场时间、结局) - 外貌与形象(容貌、衣着、形象演变) - 性格侧写(核心特质、深度分析、语言风格) - 能力与技能(战斗风格/专业技能) - 个人履历(按时间线梳理关键事件) - 人际关系网(与其他角色的互动) - 印象深刻的原文(台词和侧写引用) - 心理分析与主题意义 - 总结评价 --- ## 配置参数 以下参数可根据需要调整: | 参数 | 默认值 | 说明 | |------|--------|------| | `target_tokens` | 50000 | 每块目标 token 数 | | `overlap_lines` | 200 | 块间重叠行数 | | `chars_per_token` | 1.35 | 中文字符/token 比率 | | `max_concurrent` | 16 | 最大并行 agent 数 | --- ## 错误处理 | 场景 | 处理方式 | |------|---------| | 文件不存在 | 立即终止,报告错误 | | 文件过大无法一次读取 | 使用 offset/limit 分段读取 | | 部分 chunk agent 失败 | 继续处理其他,报告中标注缺失块 | | 整合 agent 失败 | 保留 chunk JSONs,建议用户手动整合 | --- ## 最终输出 成功完成后,输出目录结构: ``` /tmp/novel_analysis/<书名>_<timestamp>/ ├── metadata.json # 全书元数据 ├── chunks/ # 各分块详细分析 │ ├── chunk_01.json │ ├── chunk_02.json │ └── ... ├── report.md # 📖 最终深度阅读报告(中文) └── characters/ # 📋 角色档案(如果执行了阶段4) ├── profile_角色A.md └── ... ``` **向用户报告**: ``` 分析完成! 输出目录: /tmp/novel_analysis/<书名>_<timestamp>/ ├── metadata.json # 元数据 ├── chunks/ # 分块分析 (N 个文件) │ ├── chunk_01.json │ └── ... ├── report.md # 深度阅读报告 └── characters/ # 角色档案(如有) └── profile_XX.md 查看完整报告: cat <输出目录>/report.md 查看角色档案: cat <输出目录>/characters/profile_XX.md ``` --- ## 使用示例 ### 示例 1: 完整分析 **用户**: "帮我深度分析 novel.txt" **你的执行**: 1. 创建 todo list 跟踪进度 2. 统计行数,创建输出目录 3. 分段读取,生成 metadata.json 4. 计算分块边界 5. **在单个消息中**启动所有并行 chunk agents 6. 等待全部完成 7. 启动整合 agent(同步) 8. 报告完成,提供目录路径 ### 示例 2: 分析 + 角色档案(带角色追踪) **用户**: "分析 novel.txt,并生成主角的角色档案" **你的执行**: 1. 执行阶段1(粗读元数据) 2. 从 metadata.json 识别主角名称(假设为"张三") 3. **启动阶段2时,在每个 chunk agent 的 prompt 末尾追加角色追踪指令**: ``` ### SPECIAL INSTRUCTION: Character Tracking The user wants a detailed profile for character: 张三 If 张三 appears in your chunk: - Record ALL details (appearance, dialogue, actions, emotions) - Capture verbatim quotes - Note relationship developments
Ver no GitHub
Este SKILL.md e muito grande, entao o SkillsMP mostra aqui apenas a primeira secao. Ver no GitHub