# 结构迁移(长篇) 长篇的结构迁移按本文件把 `拆文库/{导入书名}/` 转成长篇项目 `{导入书名}/`。书目录名与拆文目录名相同,写正文守卫据此放行正文迁移。 外部对标、目标平台与作者交代取自导入记录(`{书目录}/.story/work/导入记录.md`)。本时刻只建追踪目录骨架,状态由 Phase 4 初始化;逐章细纲在最后一步分批反推。 --- ## 迁移步骤 ### Step 1:创建项目骨架 ``` {导入书名}/ ├── 设定/ │ ├── 世界观/ │ ├── 角色/ │ └── 势力/ ├── 大纲/ ├── 正文/ ├── 追踪/ │ └── 逐章记录/ ├── 对标/ # 可选;仅在显式绑定外部对标时创建子目录 └── 参考资料/ ``` ### Step 2:正文标准化 将原文迁移到 `正文/`,统一命名 `第XXX章_章名.md`:识别章节分隔符、提取章节标题、补零对齐编号(第1章 → 第001章)、保留原文内容不变,规则见下方「正文标准化规则」。 ### Step 3:角色文件迁移 将 `拆文库/{导入书名}/角色/{角色名}.md` 迁移到 `设定/角色/{角色名}.md`,按下方「角色文件迁移模板」写。角色分级沿用拆文档案里的「定位」: | 等级 | 标准 | 迁移策略 | |------|------|---------| | 主角 | 出现章节 ≥50% + 推动主线 + 完整成长轨迹 | 完整迁移 | | 反派 | 与主角对立 + 推动核心冲突 + 明确动机 | 完整迁移 | | 核心配角 | 出现章节 ≥20% 或推动重要支线,或有独立人格和成长 | 完整迁移 | | 功能角色 | 出现章节 <20% + 作用有限 | 只填模板里标了「功能角色也填」的项 | ### Step 4:关系文件迁移 将 `拆文库/{导入书名}/角色/角色关系.md` 转换为 `设定/关系.md`,按下方「关系文件转换规则」输出。 ### Step 5:同步世界观设定 当前拆文契约按主题输出 `拆文库/{导入书名}/设定/世界观/*.md` 与 `设定/势力/*.md`,导入时原样同步;`世界观/` 必须有 `背景设定.md`,短小力量体系可并入。当前产物缺失时停止并提示修复 Stage 4;检查器确认的旧成果则从已有扁平设定转换到当前项目路径,标注来源,不回写或覆盖拆文库。规则见下方「世界观同步规则」。 ### Step 6:题材定位生成 从拆文报告中提取核心发现,生成 `设定/题材定位.md`(下方「题材定位生成」模板)。本书题材、核心梗、情绪与节奏摘要来自 `拆文库/{导入书名}/`,但这些字段不是对标登记,不得用 `{导入书名}` 填对标。导入记录里「作者交代」的偏好与红线同步写进模板的「作者已定」小节,续写时才看得到。 ### Step 7:外部对标(只在导入记录绑定了外部对标时) 导入记录绑定了外部 `{对标书名}` 时,读 [benchmark-sync.md](benchmark-sync.md) 照做:在题材定位追加对标登记,把 `拆文库/{对标书名}/` 的资料和文风同步到 `对标/{对标书名}/`。没有绑定时跳过本步,不创建对标子目录。 ### Step 8:本书文风 项目里还没有 `设定/文风.md`、而 `拆文库/{导入书名}/文风.md` 存在时,问作者:「拆书时整理了这本书自己的文风(句子长短、对话写法、常用手法),要存成本书的文风设定吗?存了以后续写照这个写;不存就按对标或默认写法。」作者同意后复制成 `设定/文风.md`,第一行写 `> 来源:导入时从本书已写章节整理(拆文库/{导入书名}/文风.md)`;不同意就不建。已有 `设定/文风.md` 时不覆盖、不提问。本书文风只放 `设定/`,不复制进 `对标/`。 ### Step 9:大纲与卷纲(作者确认点) 按下方「大纲反推规则」反推 `大纲/大纲.md`:原文有明确卷界直接按卷界分;没有时向作者展示候选卷划分,**等作者确认后**才写定卷级结构和 `大纲/卷纲_第X卷.md`,确认结果(或「按原文卷界」)写进导入记录的「卷划分」。`剧情/散落情节.md` 合并到相关卷纲或大纲附录。 每份卷纲写完,按当前平台探测 Python 3(`python3` → `python` → `py -3`)跑 `{PYTHON} {story-import skill 根}/scripts/outline_view.py --check --strict {书目录}/大纲/卷纲_第X卷.md`,问题数归零才算写定;写正文时用同一个脚本按单元取卷纲,若未通过,续写第一章会停止。 ### Step 10:逐批反推细纲 卷纲写定、本文件末尾的质量清单通过后,在导入记录勾「结构迁移」,再按 [outline-reverse.md](outline-reverse.md) 分批反推细纲。细纲时刻只读任务包,不再读本文件;建议作者新开对话说「继续导入」再开始第一批。 --- ## 映射总览 | 拆文库路径 | 项目路径 | 转换方式 | |-----------|---------|---------| | `原文/` | `正文/第XXX章_章名.md` | 按章节分割并标准化命名 | | `快速预览.md` | — | 参考卷划分候选、剧情走向,不直接迁移 | | `角色/{角色名}.md` | `设定/角色/{角色名}.md` | 按角色卡模板改写 | | `角色/角色关系.md` | `设定/关系.md` | 格式转换 | | `设定/世界观/*.md` | `设定/世界观/*.md` | 按主题原样同步 | | `设定/势力/*.md` | `设定/势力/*.md` | 按势力原样同步 | | `剧情/故事线.md` | `大纲/大纲.md` | 反推卷级结构(需用户确认卷划分,见下) | | `剧情/{标题}.md` | `大纲/卷纲_第X卷.md` 的剧情单元卡 | 一个剧情文件对应一张单元卡 | | `剧情/节奏.md` | `设定/题材定位.md`(节奏摘要) | 提炼已写部分的既有节奏,保留为本书导入基线;不复制到 `对标/` | | `剧情/情绪模块.md` | `设定/题材定位.md`(情绪摘要)、单元卡「单元情绪引擎」 | 提炼已写部分的读者需求与情绪引擎;不复制到 `对标/` | | `文风.md` | `设定/文风.md` | 作者同意才建(Step 8) | | `章节/第N章_摘要.md` | `大纲/细纲_第XXX章.md` | 逐批反推([outline-reverse.md](outline-reverse.md)) | | — | `设定/题材定位.md` | 从拆文报告生成 | | `剧情/散落情节.md` | `大纲/大纲.md` 附录或对应卷纲 | 合并到相关卷的大纲 | 旧拆文的目录或字段名与上表不同时,先建立一次“旧路径 → 当前目标”的来源映射,再按实际可读内容转换;不要为了改名复制出第二套拆文真源。`剧情/节奏.md`、`剧情/情绪模块.md` 或主题化设定缺失时,旧内容能支持的导入步骤照常执行,对应摘要写「未知/待增强」;只有用户要启用依赖这些资料的新对标召回时,才回到 story-long-analyze 做按需增强。 --- ## 正文标准化规则 ### 命名格式 源文件名 → 标准格式:`第{零填充三位}章_{章名}.md` | 源文件名 | 标准化后 | |---------|---------| | 第一章_初入江湖.txt | 第001章_初入江湖.md | | 第1章.md | 第001章_无题.md | | chapter01.md | 第001章_无题.md | | 01_觉醒.md | 第001章_觉醒.md | ### 章节分隔识别 当源为单个大文件时,按以下分隔符切分: | 分隔符模式 | 示例 | |-----------|------| | `第X章` / `第X章 ` / `第X章:` / `第X章 XXX` | 第1章 初入江湖 | | `Chapter X` | Chapter 1 | | 纯数字编号 + 标题 | 1. 觉醒 | ### 内容处理 - 保留小说正文,不改写情节、措辞或台词 - 编码统一为 UTF-8 - 只移除可确认不属于小说正文的文件头尾信息,如下载广告;无法确认的内容保留 --- ## 角色文件迁移模板 字段与长篇写作的主角卡、配角卡一致,续写时可直接使用。证据取拆文档案和关键情节;外貌、口头禅、标志动作是读者认人的锚点,从原文找原句填,找不到写 `[待补充]`,不杜撰。 ```markdown --- name: {角色名} --- # {角色名} ## 角色卡 - 角色定位:{主角/反派/核心配角/功能角色;一句话说清在故事里干什么}(功能角色也填) - 身份标签:{截至第 N 章的身份}(功能角色也填) - 与主角关系:{主角本人写「本人」}(功能角色也填) - 外貌特征:{原文写到的 3-5 个记忆点} - 性格关键词:{3-5 个,从行为归纳,写出矛盾面} - 核心目标:{全书或当前阶段想达成什么} - 核心动机:{为什么非要达成} - 致命弱点:{会让他犯错的性格缺陷} - 口头禅/标志动作:{原文里反复出现的说法或动作,引原句}(功能角色也填) - 当前能力与资源:{截至第 N 章} - 退场方式:{已退场写在第几章、怎么退的;未退场写 [待补充]} ## 经历与成长 {拆文档案的核心经历与成长弧线,按时序} ## 出场记录 | 章节 | 关键事件 | 状态变化 | |------|---------|---------| | 第{N}章 | {事件} | {变化} | ## 别名 {别名、类型和依据;没有写「无」} ``` --- ## 关系文件转换规则 拆文的 `角色关系.md` 是有向表:`关系ID | 主体 → 客体 | 关系动作/类型 | 表面关系 | 真实关系 | 触发事件 | 双方得失 | 变化后状态 | 证据等级 | 证据`,同一对角色的历史演变按行保留。转成项目格式: - 同一对角色合成一行;两个方向的动作不同时,写进「当前状态」(如「A 护着 B;B 在利用 A」)。 - 关系类型:家人→亲情、恋人→爱情、朋友→友情、敌人→敌对、师徒→师生、上下级→主从、商业→利益;同事按实际互动归友情或利益。 - 情感倾向:拆文没有这一列,从关系动作和双方得失判断(保护、依赖多为正面;控制、欺骗、竞争多为负面);两种都有写「复杂」。 - 当前状态取这对角色最后一行的「变化后状态」;起始章节取最早一条证据的章;变化节点按时序列各行的「触发事件」。 - 「真实关系」和「表面关系」不同的,另写进「表面与真实」小节,注明截至第 N 章读者知不知道。续写不能提前说破,必须保留。 - 证据等级是 C 的关系,在当前状态后标「(只有旁人说法)」。 ### 目标格式模板(设定/关系.md) ```markdown # 角色关系图 ## 关系总览 | 角色 A | 角色 B | 关系类型{亲情/爱情/友情/敌对/师生/主从/利益} | 情感倾向{正面/负面/中性/复杂} | 当前状态 | 起始章节 | 变化节点 | |--------|--------|---------------------------------------------|-----------------------------|---------|---------|---------| | {名} | {名} | {类型} | {倾向} | {描述} | 第{N}章 | {事件} | ## 表面与真实 | 角色 A | 角色 B | 表面关系 | 真实关系 | 读者截至第 N 章知道吗 | |--------|--------|---------|---------|---------------------| | {名} | {名} | {旁人看到的} | {实际是} | {知道/部分知道/不知道} | ## 关系演变 {角色A}<->{角色B}: - 起点:{初始关系} - 转折:{章节·事件·变化} - 当前:{现状} ## 核心冲突关系 {列出推动剧情的2-3对核心对立/合作关系} ``` 没有表面与真实不同的关系时,「表面与真实」小节写「无」。 --- ## 世界观同步规则 当前 `story-long-analyze` 输出主题化目录,直接原样同步。旧成果已在 Phase 2 确认可用时,按 Step 5 从实际内容转换到目标路径。 | 源路径 | 目标路径 | 当前契约 | |---------|---------|---------| | `拆文库/{导入书名}/设定/世界观/*.md` | `{项目}/设定/世界观/*.md` | 原样同步;`背景设定.md` 必须存在 | | `拆文库/{导入书名}/设定/势力/*.md` | `{项目}/设定/势力/*.md` | 原样同步已独立的势力文件 | `力量体系.md`、`地理.md` 或小势力资料不足 200 字时,上游并入 `背景设定.md`,独立文件可省略。当前契约产物缺少必要文件时,提示补 `story-long-analyze` Stage 4;已确认可用的旧成果按来源映射转换,不仅因旧文件名而阻断。 --- ## 大纲反推规则 ### 大纲.md(卷级结构)与卷划分规则 从 `剧情/故事线.md`、`剧情/*.md` 和 `快速预览.md` 反推,**卷划分必须遵守以下决策规则**: **情形 A:原文有明确卷界** 原文中存在明确卷级标记(如「第一卷 XXXX」「卷一」等章节层级标题)→ 按原文卷界直接划分,无需询问用户。 **情形 B:原文无明确卷界** 不做机械切卷。执行流程: 1. 根据故事线/场景切换/大型时间跳跃,检测候选卷边界(见下方「候选边界检测参考」); 2. 向用户展示候选划分方案,格式示例: ``` 候选卷划分(供参考,非定论): - 候选卷一:第 1-18 章(世界观建立 + 初步成长,场景:城郊学院) - 候选卷二:第 19-45 章(主线冲突爆发,场景:帝都议事堂) - 候选卷三:第 46-XX 章(最终对决,场景切换:上古遗迹) 以上为故事线/场景切换自动检测结果,请确认或调整。 ``` 3. **等待用户确认卷划分方案**后,才生成 `大纲/大纲.md` 的卷级结构和对应 `大纲/卷纲_第X卷.md`; 4. 用户未确认前,`大纲/大纲.md` 只记录候选方案,不写定卷纲。 > **不允许**用「每卷默认 20-40 章」机械切分原文无卷界的书。候选仅作参考,最终由用户拍板。 #### 目标格式模板(大纲/大纲.md) 与长篇写作的全书大纲同形,续写时直接接着用;导入只填有证据的项,其余写 `[待补充]`: ```markdown # 大纲 ## 全书概况 - 已写:第 1–{N} 章,约 {Y} 万字;{完本 | 连载中} - 全书主线与终局:{从故事线反推;证据不足写 [待补充]} ## 分卷表 | 卷 | 卷名 | 字数区间 | 所属阶段 | 功能 | 核心事件 | 起始状态 → 结束状态 | 卷契约 / 终局储备 / 阶段边界 | |---|---|---|---|---|---|---|---| | 1 | {卷名} | 约 {X} 万字,{Y} 章 | {开篇/发展/高潮/收尾} | {从剧情分析推断} | {一句话} | {从角色弧线推断} | {有证据才写,否则 [待补充]} | ``` ### 候选边界检测参考 | 信号类型 | 示例 | 卷边界可能性 | |---------|------|------------| | 章节连续 + 同一故事线 | 同一城市/同一势力视角 | 同一卷 | | 主要场景切换(新地图/新阵营) | 从城郊进入帝都 | 候选新卷起点 | | 大型时间跳跃(数月/数年) | 「三年后…」 | 候选新卷起点 | | 主要阶段目标完成 + 新目标开启 | 击败阶段 boss → 新危机出现 | 候选新卷起点 | | 故事线汇总中已有阶段划分 | `剧情/故事线.md` 内部分段 | 优先参考 | ### 卷纲反推 #### 目标格式模板(大纲/卷纲_第X卷.md) 卷纲沿用长篇写作的格式:每个 `##`/`###` 标题的下一行写作用域行,全卷有效的段写 `> 作用域:卷级常任`,剧情单元卡写 `> 作用域:单元级 {单元ID}`。写正文时脚本按单元ID 只取卷级段和该单元的卡,所以每张卡都要有单元ID 和章节范围。只反推已写内容,缺证据的字段写 `[待补充]`、不杜撰;续写补纲时由长篇写作按它的单元卡模板补全。 ```markdown # {卷名} 卷纲 ## 核心信息 > 作用域:卷级常任 - 章节范围:第{X}-{Y}章 - 字数目标:{W}万字 - 本卷定位:{铺垫/发展/高潮/转折/收尾} ## 卷契约与终局储备(反推) > 作用域:卷级常任 - 卷契约:{从本卷剧情归纳读者期待与主角高光;证据不足写 [待补充]} - 本卷主推线:{从情节点归纳承担本卷最大高潮的线} - 本卷战果:{其余顺带兑现的线;证据不足写 [待补充]} - 本卷解锁的终局里程碑:[待补充] - 本卷禁碰的终局底牌:[待补充] - 契约风险:{契约安全 / 需补强 / 契约破坏;无法判断写 [待补充]} ## 核心矛盾 > 作用域:卷级常任 {一句话:本卷要解决什么问题或达到什么目标} ## 剧情单元卡(反推) > 作用域:卷级常任 单元ID 按 L{卷号}-{两位序号} 编(L1-01、L1-02…);各卡章节范围首尾相接,合起来覆盖本卷全部已写章。 ### 剧情单元 L1-01 > 作用域:单元级 L1-01 - 单元ID:L1-01 - 章节范围:第{A}-{B}章 - 单元节拍/章功能分配:{建立期待→尝试→加压/转向→决定性行动→兑现→余波,从情节点分布归纳,标对应章范围} - 单元情绪引擎:{从 `剧情/情绪模块.md` 里本单元用到的模块归纳:情绪缺口→触发→主角动作→兑现;证据不足写 [待补充]} - 主角局部目标:{本单元主角要保住/拿到/证明什么} - 核心阻碍:{主要敌意、限制或误判} - 关键选择与决定性行动:{主角做了什么不可替代的判断和行动} - 兑现方式与归属:{兑现怎么发生,收益归谁} - 本单元主推线/战果:{线} - 下一单元因果钩子:{怎么推入下一单元;本卷最后一张卡写已留下的悬念} ## 情绪弧线 > 作用域:卷级常任 - 模板:{V形/倒V形/W形/渐进形/延迟满足形/急转弯形} - 选择理由:{结合题材和本卷定位} | 章节 | 情绪基调{紧张/轻松/悲伤/热血/温馨/震惊} | 强度{1-10} | 触发事件 | |------|-----------------------------------------|-----------|---------| | 第{N}章 | {基调} | {N} | {事件} | ## 人物弧线 > 作用域:卷级常任 | 角色 | 本卷起点 | 本卷终点 | 关键转变 | |------|---------|---------|---------| | {名} | {状态} | {状态} | {事件} | ## 本卷反转(如有) > 作用域:卷级常任 | 类型{身份/动机/阵营/信息/命运} | 涉及角色 | 误导路径 | 揭示章节 | 影响范围 | |------|---------|---------|---------|---------| | {类型} | {名} | {如何误导读者} | 第{N}章 | {影响哪些线} | ## 本卷伏笔 > 作用域:卷级常任 | 伏笔 | 埋设章节 | 预计回收 | 类型{短期/中期/长期} | |------|---------|---------|---------------------| ``` #### 字段映射 从剧情文件提取每卷的: - 核心矛盾 → 核心矛盾字段 - `剧情/{标题}.md` 的结构分布与情节点 → 一张剧情单元卡(节拍、目标、阻碍、关键行动、兑现) - 情节点分布 → 情绪弧线 - 角色出场 → 人物弧线 - 铺垫类情节点 → 伏笔 半成品最后一张卡的章节范围到第 N 章为止;第 N+1 章以后的单元由续写时的补纲来排,导入不预写。 --- ## 题材定位生成 从拆文报告中提取核心发现,生成 `设定/题材定位.md`。 ### 目标格式模板(设定/题材定位.md) ```markdown # 题材定位 ## 基本信息 - 题材类型:{玄幻/都市/系统/...} - 目标平台:{Phase 1 向用户采集的目标平台;无则取 `拆文报告.md`「基本信息」的「目标平台」,仍无填 [待补充]。story-review 据此选平台 rubric} - 核心梗:{一句话卖点} - 微创新点:{与同类题材的差异} ## 作者已定 - {导入记录「作者交代」里的偏好与红线、残稿决定,一条一行;没有写「无」} ## 核心梗三分法 - 表层卖点:{读者一眼看到的吸引力} - 深层爽点:{持续追读的情绪驱动力} - 长线钩子:{支撑全书的悬念/目标} ## 读者需求 / 情绪引擎 > 本段从 `拆文库/{导入书名}/剧情/情绪模块.md` 提炼,只记录本书已写内容的续写基线,不把本书登记成对标。 | 读者需求 | 情绪缺口 | 满足方式 | 可复现模块 | 来源 | |---------|---------|---------|------------|------| | {安全感/优越感/期待感/情感补偿/认知反转/陪伴感} | {缺什么} | {如何被满足} | {EM-001 等} | `[导入分析] 剧情/情绪模块.md` | ## 节奏与触发参考 > 本段从 `拆文库/{导入书名}/剧情/节奏.md` 提炼,只记录已写部分的节奏事实。 | 节奏模块 | 关键信息推进 | 情绪触动点 | 爆发节奏 | 来源 | |---------|-------------|------------|----------|------| | {RH/TR 编号} | {信息如何被扩写} | {触发什么感受} | {铺垫→爆发→冷却} | `[导入分析] 剧情/节奏.md` | ## 题材框架 - 关键转折节点:{列出} ``` ### 字段映射 - 题材类型、核心梗、微创新点 → 从 `拆文报告.md`「基本信息」「核心发现」提取 - 核心梗三分法 → 表层卖点、深层爽点、长线钩子依次取 `拆文报告.md`「核心发现」「读者在追什么」「伏笔与冲突」 - 读者需求 / 情绪引擎 → 从 `剧情/情绪模块.md` 提取;当前契约产物缺失时补 Stage 3+,旧成果按「映射总览」的兼容规则处理 - 节奏与触发参考 → 从 `剧情/节奏.md` 提取;当前契约产物缺失时停止迁移并补齐,不用其他概要冒充;旧成果可标「未知/待增强」继续导入 - 题材框架 → 从本书导入分析生成;外部对标的登记和概要由 benchmark-sync.md 追加,两类来源不混写 --- ## 质量检查清单 迁移完成、进入逐批细纲前执行(不念给作者,没通过先修): - [ ] 正文文件数 = 源文件章节数 - [ ] 主要角色(主角 + 核心配角)文件已创建,外貌、口头禅有原文依据或标了 [待补充] - [ ] 关系.md 非空;拆文里表面关系和真实关系不同的,都进了「表面与真实」 - [ ] 大纲.md 有卷级结构;每卷卷纲的剧情单元卡章节范围覆盖本卷全部已写章,`outline_view.py --check --strict` 问题数为 0 - [ ] 散落情节已合并到相关卷纲或大纲附录 - [ ] 卷划分已经用户确认(原文无明确卷界时必检),确认结果已写进导入记录 - [ ] `拆文库/{导入书名}/` 未被复制到 `对标/`,本书未登记为自身对标 - [ ] 若绑定外部对标,已按 benchmark-sync.md 的清单核过