复制安装命令
用 Codex 或 Claude 安装复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它先审查 Skill 页面再帮你安装。
复制前请先查看来源、License 和安全提示。
网文写作 skill 包,覆盖长篇与短篇网络小说的扫榜、拆文、写作、去AI味、封面图全流程。
用 Codex 或 Claude 安装复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它先审查 Skill 页面再帮你安装。
复制前请先查看来源、License 和安全提示。
来源文件:README.md
English | 中文
网文写作 skill 包,覆盖长篇与短篇网络小说的扫榜、拆文、写作、去AI味、封面图全流程。内置适配 Claude Code、OpenCode、ZCode、OpenClaw、Codex CLI、Reasonix;能读取项目文件的 Web AI / Agent 环境也可按通用 skills 路径使用。
套路 = 确定性的情绪满足
专业作者的方法论三步走:
围绕四条线展开:爆款逆向 · 剧情模块化重组 · 上下文状态分层管理 · 人机协同。
v0.7.6 起:重点在正文那一段。写正文的
narrative-writer有三条规则一直在空转——「写完必须立即统计字数」给的是一条 Bash 命令,可它的工具白名单里没有 Bash,同一句话又禁掉了模型估算,于是「字数达标是硬性要求」背后没有任何可执行判据;「返回前报出句长分布」同样只能编,而主会话正拿它做质量校验;「正文逐项展开细纲」是最高优先级的明令,放宽的那半边却只写在主 skill 里、从不进 spawn 提示词,子代理只看见限制,就按一个情节点一段平推成流水账。三条都已修好,实跑首次落盘即进验收区间(对照组不到下限的 73%)。新增细纲照搬检测:细纲把情节点写成成品散文句时正文只剩誊抄,配套的「复沓锚句」字段让必须逐字进正文的原话(誓言、系统面板、案卷原话)不被误判。另外 Claude Code 上用 Bash 重定向写正文也会被大纲/追踪守卫拦下,以及每次会话固定加载的文本再降两成(开书 −30%、回炉 −41%)。本版agents_version为 25,已部署项目需重新运行/story-setup并新开会话。v0.7.5 起:稳定版。补上 Claude Code 写正文守卫缺的追踪检查点门——另三端从 v0.7.3 起就有,主力端此前会静默写出若干章没有追踪的正文;长篇
story-long-write每次触发都整份进上下文的 SKILL.md 从 82 KB 降到 54 KB(开书三阶段抽成按需读的workflow-setup.md,日更不再为用不上的建纲步骤付费);清掉一批过度累加的限制指令,其中一条把正文里普通的「他说」判成了违规。本版agents_version为 24,已部署项目需重新运行/story-setup并新开会话。v0.7.4 起:全是修复。
story-import不再把用户自己的书登记成对标(此前会出现「对标目录内容跟自己设定完全相同」);story-setup 重部署不再把 Reasonix / generic 项目误判成 OpenClaw,多端部署也不再每次开会话误报参考包缺失;Stage 6 文风统计在 Windows 上不再必挂。spawn 的agents_version硬门禁改成提示——版本不匹配照常并行,只有 agent 文件缺失才降级 solo。本版agents_version为 23,已部署项目需重新运行/story-setup并新开会话。更早版本变更见 CHANGELOG.md。
flowchart LR
classDef entry fill:#f0f0f0,color:#333,stroke:#999,stroke-width:1px
classDef phase fill:#e8f4fd,color:#1a1a2e,stroke:#4a9be8,stroke-width:1px
classDef final fill:#fce4ec,color:#333,stroke:#e57373,stroke-width:1px
entry_l{{"长篇作者"}}:::entry
entry_s{{"短篇作者"}}:::entry
entry_r{{"已有方向"}}:::entry
entry_i{{"已有小说"}}:::entry
subgraph S0 [" 环境部署"]
setup["/story-setup"]:::phase
end
subgraph S1 [" 扫榜选材"]
direction TB
scan_l["长篇扫榜"]:::phase
scan_s["短篇扫榜"]:::phase
end
subgraph S2 [" 拆文学习"]
direction TB
analyze_l["长篇拆文"]:::phase
analyze_s["短篇拆文"]:::phase
import_l["已有小说导入"]:::phase
end
subgraph S3 [" 落笔创作"]
direction TB
write_l["长篇写作"]:::phase
write_s["短篇写作"]:::phase
end
subgraph S4 [" 精修定稿"]
deslop["去 AI 味"]:::final
end
entry_l --> setup
entry_s --> setup
setup --> scan_l
setup --> scan_s
scan_l --> analyze_l
scan_s --> analyze_s
analyze_l --> write_l
analyze_s --> write_s
entry_r -.->|跳过准备| write_l
entry_r -.->|跳过准备| write_s
entry_i -.->|推荐先部署| setup
setup -.->|逆向导入| import_l
import_l -.->|续写| write_l
write_l --> deslop
write_s --> deslop
方式一 直接告诉 Claude Code / OpenCode / ZCode / OpenClaw / Codex / Reasonix,或其他支持导入 GitHub 仓库/skill 的 Web AI / Agent 平台:
安装这个 skill https://github.com/zenstory-ai/oh-story-claudecode
升级时再说一次同一句话即可。
方式二 命令行:
npx skills add zenstory-ai/oh-story-claudecode -y -g
-g 全局安装,所有目录可用;去掉 -g 则只装到当前目录。更新时重新执行同一条命令即可。
Windows 上偶尔会看到 ENOENT ... mkdir 报错但末尾仍显示 Done!,这是有技能没装全。story-setup 的参考资料目录整个缺了一块时,跑 /story-setup 会提示参考资料包不完整;其它形式的残缺不一定有提示。无论有没有报错,重跑同一条安装命令即可修复。
Codex 用户: repo 内直接使用:Codex 会扫描 $REPO_ROOT/.agents/skills(指向 skills/ 的 symlink)发现 13 个 skill;用 $story、$story-setup 或 /skills 调用。Windows 上 git 需开 core.symlinks=true,否则 symlink 失效,改走下方 $story-setup 部署。
跑 $story-setup 部署到写作项目后,会写入 .codex/agents/*.toml、.codex/hooks.json、.codex/hooks/{story_codex_hook.py,run-story-hook.sh,run-story-hook.cmd} 和 .codex/skills/story-setup/references/agent-references/;请信任项目 .codex/ 配置层并在 /hooks review/trust hooks、新开 Codex 会话,让 custom agents 生效。
ZCode 用户: 在 Plugin Management 中把本仓库加入 marketplace,安装 oh-story 后可用 $story、$story-setup 或 / 面板调用 13 个 Skills/Commands。$story-setup 选择 target_cli=zcode 会部署 .zcode/skills/、.zcode/commands/、.zcode/hooks/story_zcode_hook.js,安全合并 .zcode/config.json 与根 AGENTS.md;Hook 依赖 PATH 中的 node。ZCode 3.3.4 不执行项目/plugin custom agents,也没有 PreCompact / SessionEnd,相关流程会明确降级 solo/direct,compact 后由 SessionStart 恢复上下文。
OpenCode 用户: 全局安装后 opencode 自动从 ~/.claude/skills/ 发现 skills;首次用自然语言触发 story-setup(如「用 story-setup 部署网文写作环境」),部署后退出重进 opencode -c 才能用 slash command。部分 hook 行为与 Claude Code 有差异(session-start / session-end / compact 等),详见 CONTRIBUTING.md 的 OpenCode 章节。
OpenClaw 用户: 当前支持 skills-only:OpenClaw 可从 workspace skills/、.agents/skills、~/.agents/skills、~/.openclaw/skills 等 skill root 发现本项目 13 个 skill;SKILL.md 已按 OpenClaw 要求使用单行 name / description 与单行 JSON metadata.openclaw。story-setup 选择 target_cli=openclaw 时会把 skills 复制到项目 skills/ 并写入 OpenClaw 版 AGENTS.md;agents/hooks 暂不部署,写正文前大纲守卫在 OpenClaw 下是 skill 内软约束。部署后如未显示新 skills,请新开 OpenClaw session 或等待 watcher 刷新。
Reasonix 用户: 当前支持 skills + 原生 plugin manifest:Reasonix 原生扫描项目 skill root(.agents/skills 等,指向 skills/ 的 symlink)发现 13 个 skill,用 reasonix doctor capabilities 校验;也可用根 reasonix-plugin.json 走 reasonix plugin install。story-setup 选择 target_cli=reasonix 时会把 skills 复制到项目 skills/ 并写入 Reasonix 版 AGENTS.md;hooks/custom agents 暂不部署,涉及专业 Agent 的 skill 走 solo/direct fallback。Windows 未启用 symlink 时改走原生 plugin。
Web AI / 通用 Agent 用户: 平台能读取 GitHub 仓库或项目文件时,可让 Agent 读取 skills/*/SKILL.md 与对应 references/;需要本地副本时,story-setup 可选 target_cli=generic,只写通用 AGENTS.md 和 skills/。无本项目 hooks/custom agents 的环境按 skill 内软约束或 solo/direct fallback 执行。
OpenClaw / Reasonix / 通用路径的目录残留要手动清: 这三条路径的 skill 副本在项目 skills/ 里,重跑 /story-setup 执行的就是项目里那份,自动清理到不了。项目里若出现 skills/story-setup/references/agent-references/agent-references/(可能嵌了多层)或 skills/story-setup/skills/,手动删掉。要让项目里的 skill 文本本身更新,还需要重新安装本项目后,用新包覆盖项目 skills/ 下这 13 个目录。
升级后如果项目里已经跑过 /story-setup,建议在项目根重跑一次 /story-setup,同步 hooks / agents / references。每版变更见 CHANGELOG.md 与 Releases。
多 agent 协作要先部署再新开会话: 7 个专业 agent(story-architect、narrative-writer、consistency-checker 等)由 /story-setup 写入项目 .claude/agents/,或由 $story-setup 写入 .codex/agents/*.toml。Claude Code / Codex 都在会话启动时更稳定地注册 custom agent;ZCode 3.3.4、OpenClaw Phase 1、Reasonix Phase 1 与 generic 路径默认走 skills + solo fallback。判断是否生效:新会话里跑 /story-review,报告头是 Effective Mode: full/lean 即注册成功,是 Fallback: ... -> solo 说明当前运行时未暴露该 agent。
导入续写顺序: 推荐先在写作项目根运行 /story-setup(部署 hooks/agents/AGENTS),新开/刷新会话后运行 /story-import 导入已有小说,再用 /story-long-write 日更 或 /story-long-write 写第N章 续写。也可以直接运行 /story-import;它会先检测是否已 setup,未部署时让你选择先去 setup 或继续串行导入。
| Skill | 触发 | 说明 |
|---|---|---|
story-setup | /story-setup $story-setup /准备写书 | 环境部署 · Claude/OpenCode/Codex/ZCode/OpenClaw/Reasonix + generic(已有配置安全合并) |
story | /story $story /story dashboard | 工具箱路由 · 模糊意图分发 + 本地拆文/项目 Dashboard |
story-long-write | /story-long-write /写长篇 | 长篇写作 · 大纲搭建、人物设定、正文输出 |
story-long-analyze | /story-long-analyze | 长篇拆文 · 黄金三章、爽点设计、节奏分析 |
story-long-scan | /story-long-scan | 长篇扫榜 · 起点/番茄/晋江市场趋势 |
story-short-write | /story-short-write | 短篇写作 · 情绪设计、反转构思、精修出稿 |
story-short-analyze | /story-short-analyze | 短篇拆文 · 故事核、结构分析、情感线、反转设计、写作手法、共鸣分析 |
story-short-scan | /story-short-scan | 短篇扫榜 · 知乎盐言/番茄短篇风口数据 |
story-deslop | /story-deslop /去AI味 | 去AI味 · 检测并清除 AI 写作痕迹 |
story-import | /story-import /导入小说 | 逆向导入 · 将已有小说反向解析为标准项目结构 |
story-review | /story-review /审查 | 多视角审查 · 4 Agent 多视角审稿 + 番茄/起点/知乎评分标准 |
story-cover | /story-cover /封面 | 封面生成 · 书名题材分析 + GPT-Image-2(Codex 内置用量 / API 回退) |
browser-cdp | /browser-cdp | 浏览器操控 · CDP 协议复用登录态抓取数据 |
story-deslop的本地检查是写作 lint:blocking 只限确定性句式/标点问题,其他提示按读感判断;朱雀等外部检测只作自测参考,不替代人工读感。
自然语言同样触发:
story-long-writestory-deslopstory-importstory dashboard(本机浏览拆文库与写作项目,可轻量编辑)story-explorer agent运行 /story dashboard(Codex 用 $story dashboard)打开本地写作工作台,浏览拆文库与
长/短篇项目文件树,并完成搜索、Markdown 预览、文本编辑、冲突保护保存和确认删除。
服务仅监听 127.0.0.1,小说内容不会上传。


使用 /story-long-analyze 深度模式分析《盘龙》前23章的完整输出:
demo/拆文库/盘龙/
├── 概要.md # 全书概要 + 章节索引
├── 拆文报告.md # 五维评分 + 爽点密度 + 可借鉴套路
├── 文风.md # 句长/标点/对话潜台词/情绪节奏 + 原文锚点
├── 章节/
│ ├── 第1章_深度拆解.md … 第3章_深度拆解.md # 黄金三章逐章深度分析
│ └── 第1章_摘要.md … 第23章_摘要.md # 每章一个摘要文件
├── 角色/
│ ├── 林雷.md # 主角完整档案
│ ├── 霍格.md # 核心配角
│ ├── 希尔曼.md # 核心配角
│ ├── 希里.md # 功能角色
│ ├── 德林柯沃特.md # 核心配角
│ ├── 沃顿.md # 功能角色
│ └── 角色关系.md # 关系网络
├── 剧情/
│ ├── 故事线.md # 框架识别 + 4剧情 + 2故事线
│ ├── 强者过境与魔法启蒙.md 等 # 五个分场景剧情单元
│ ├── 节奏.md # 节奏/关键信息递进/情绪触发爆发节律
│ └── 情绪模块.md # 读者需求/情绪引擎/可复用写作模块
└── 设定/
├── 世界观/
│ ├── 背景设定.md # 核心规则 + 特殊设定
│ ├── 力量体系.md # 战气 + 魔法 + 等级
│ ├── 地理.md # 安达卢西亚 + 玉兰大陆
│ └── 金手指.md # 盘龙戒指 + 德林柯沃特
└── 势力/
└── 巴鲁克家族.md # 龙血血脉家族档案
长篇拆文会额外生成 文风.md,并在 剧情/ 下产出 节奏.md(节奏/关键信息递进/情绪触发爆发节律)和 情绪模块.md(读者需求/情绪引擎/可复用写作模块);日更写作会通过 对标/{书名}/剧情/ 读取这些素材,避免文风、节奏和情绪模块偏离对标书。
使用 /story-short-analyze 拆解短篇《曾将爱意私藏》(约 8500 字,追妻火葬场 · 死遁)的完整输出:
demo/拆文库/曾将爱意私藏/
├── 原文/原文.txt # 原文备份
├── 拆文报告.md # 故事核 + 五维评分 + 爆点6维 + 认知反转 + 共鸣9层
├── 情节节点.md # 54 个情节节点(原文引用 + 情绪标记 −9~+9)
├── 写作手法.md # POV / 对话 / 信息差 / 物件钩子 等 11 项
└── _meta.json # 结构计数 structure_counts(Phase 7 门控依据)
短篇拆文产出 拆文报告 / 情节节点 / 写作手法,下游 /story-short-write 据此写同题材新短篇。
推荐先 /story-setup 部署写作项目,再使用 /story-import 把作者已发布的前 20 章(约 3.7 万字)逆向重建为可续写的写作工程,最后接 /story-long-write 日更 或 /story-long-write 写第21章 续写:
demo/长篇/让你管账号,你高燃混剪炸全网/
├── 正文/ 第001–020章(已发布原文)
├── 大纲/ 大纲.md · 卷纲_第1卷.md · 细纲_第001–020章.md(1 章 1 文件)
├── 设定/ 角色/{江晨·钟嘉嘉·周薄森·张耀祖·吴伟·李林}
│ 世界观/{背景设定·金手指} · 关系.md · 题材定位.md · 文风.md
└── 追踪/ _tracking-state.json · 上下文.md · 伏笔.md · 逐章记录/
角色状态/{角色名}.md · 时间线/{作者真相.md·读者已知.md}
逐章提取(事件 / 角色 / 设定 / 伏笔 / 时间线)反推为续写 bible,作者从第 21 章无缝接着写。
写作 skill 内部通过 7 个专业 Agent 协作,各司其职:
| Agent | 模型 | 职责 |
|---|---|---|
| story-architect | Opus | 故事架构 · 题材定位、大纲结构、钩子/反转设计、情绪弧线 |
| character-designer | Sonnet | 角色设计 · 角色档案、语言风格、动机链、对话创作 |
| narrative-writer | Sonnet | 叙事写手 · 正文写作、去AI味、格式合规 |
| consistency-checker | Haiku | 一致性检查 · 事实冲突扫描、伏笔追踪、S1-S4 分级报告 |
| story-researcher | Sonnet | 资料研究 · CDP 搜索+正文提取、多源交叉验证、结构化参考文件输出 |
| story-explorer | Haiku | 故事查询 · 角色/伏笔/设定/进度只读查询,日更上下文快速加载 |
| chapter-extractor | Haiku | 章节提取 · 摘要+情节点+角色提及,并行拆文核心单元 |
Agent 按需加载 references/ 中的写作理论(角色设计、对话技法、反转工具箱等 100+ 份方法论文件),不预占上下文。
/story-setup 为 Claude Code 部署 8 个自动化 hook:
| Hook | 触发时机 | 功能 |
|---|---|---|
| session-start.sh | 会话开始 | 显示分支、进度快照、拆文状态 |
| session-end.sh | 会话结束 | 记录会话日志到 追踪/session-log.txt |
| detect-story-gaps.sh | 会话开始 | 检测设定缺口、大纲缺失、伏笔断线 |
| pre-compact.sh | 上下文压缩前 | 保存进度快照路径和行数摘要 |
| post-compact.sh | 上下文压缩后 | 提示读取进度快照恢复上下文 |
| validate-story-commit.sh | git commit 时 | 检查硬编码属性、设定必填字段(仅警告,不阻断) |
| guard-outline-before-prose.sh | 写正文前(Write/Edit) | 缺对应细纲/小节大纲时阻止首次创建正文(阻断),强制先搭大纲 |
| check-prose-after-write.sh | 正文写入后(Write/Edit) | 轻量扫描截断、工程词、毒句式和字数欠账(提醒,不阻断) |
一部长篇动辄几十万字、几百章。设定冲突、伏笔断线、时间线对不上——写到最后全靠记忆硬撑,迟早翻车。
用文件系统把设定、大纲、正文、追踪拆开,每个维度独立维护。对话只负责创作,不负责记忆。
长篇:
{书名}/
├── 设定/
│ ├── 世界观/ # 背景、力量体系等,按主题拆文件
│ ├── 角色/ # 每个人物一个文件(江晨.md、钟嘉嘉.md)
│ ├── 势力/ # 每个势力/组织一个文件(火箭军文工团.md)
│ ├── 关系.md # 角色关系映射
│ └── 题材定位.md # 题材核心梗+对标分析
├── 大纲/
│ ├── 大纲.md # 全书卷级结构
│ ├── 卷纲_第一卷.md # 每卷一个:爽点节奏+情绪弧线+人物弧线+伏笔+反转
│ ├── 细纲_第001章.md # 每章一个:内容概括+多线情节+人物关系/出场顺序+钩子
│ └── ...
├── 正文/
│ ├── 第001章_章名.md
│ └── ...
├── 对标/ # 对标参考(结构化子目录从拆文库同步)
│ └── {对标书名}/
│ ├── 原文/ # 对标书原文章节
│ ├── 角色/ # 结构化角色卡(从 analyze 输出同步)
│ ├── 剧情/ # 结构化剧情线/节奏/情绪模块(从 analyze 输出同步)
│ ├── 设定/ # 结构化设定(从 analyze 输出同步)
│ ├── 文风.md # 日更前读取,用来贴近对标书文风
│ └── 拆文报告.md # analyze skill 输出的拆文报告
├── 追踪/ # 文件优先的连续性状态
│ ├── _tracking-state.json # 唯一结构化权威状态(不进正文 prompt)
│ ├── 上下文.md # 派生续写状态卡(固定 7 栏,≤12KB)
│ ├── 逐章记录/ # 每章未来相关连续性记录/修订覆盖层(≤3072 bytes)
│ ├── 角色状态/ # 派生核心角色快照(江晨.md、钟嘉嘉.md)
│ ├── 伏笔.md # 派生伏笔当前视图
│ └── 时间线/ # 派生作者真相.md + 读者已知.md
├── 参考资料/ # story-researcher 输出的研究资料
│ └── {topic}.md # 按研究主题拆分
短篇:
短篇/{标题}/
├── 正文.md # 完成稿
├── 小节大纲.md # 8 节结构 + 情绪曲线
└── 拆文库/ # 如有参考小说(analyze 输出)
└── {书名}/
├── 拆文报告.md
├── 情节节点.md
└── 写作手法.md
拆文库: 拆文 skill 默认输出到项目根目录 拆文库/{书名}/,产出结构化目录(角色/剧情/设定/章节),其中长篇剧情目录包含 节奏.md 和 情绪模块.md,是 analyze 的源数据(source of truth)。写作 skill 通过 对标/{书名}/剧情/ 等子目录消费这些资产(项目级引用视图),或自动回退读取 拆文库/。
.active-book: 项目根目录的文本文件,内容是当前活跃书目的相对路径(如 长篇/我的小说),hook 和写作 skill 据此定位当前项目。
各 skill 自带 references/ 知识库,按需加载,不占上下文。
| 主题 | 内容 | 所在 skill |
|---|---|---|
| 大纲排布 | 五步大纲法 · 故事结构分级 · 节点设计法 · 升级感设计 | long-write |
| 开头设计 | 开篇模式 · 前 500 字设计 · 黄金三章开头策略 | long-write / short-write |
| 人物设计 | 角色设定 · 人物提取 · 关系映射 · 动机链 · 群像 | long-write / short-write / short-analyze |
| 钩子技法 | 章尾钩子 13 式 · 章首钩子 7 式 · 段落级钩子 · 悬念编排 | long-write / short-write / short-analyze |
| 情绪设计 | 6 种弧形模板 · 期待感管理 · 题材赛道策略 | long-write / short-write |
| 题材框架 | 长篇八节点 · 短篇压缩三幕 · 8 大题材开头模板 | long-write / short-write / short-analyze |
| 对话技法 | 节奏 · 潜台词 · 信息控制 · 对话模式数据库 | long-write / short-write |
| 反转工具箱 | 类型 · 时机 · 误导底层路径 | long-write / short-write |
| 风格模块 | 对话 · 打斗 · 智斗 · 镜头式写作 · 装逼打脸 · 白描 | long-write |
| 高级技法 | 小纲四步法 · 高潮逆推 · 双线结构 · AB 交织法 | long-write |
| 去AI味 | 预防 · 三遍去AI法 · 改写范例库 · 禁用词表 | deslop / long-write / short-write |
| 质量检查 | 通用 · 长篇专项 · 短篇专项 · 毒点排查 | long-write / short-write / short-analyze |
| 写作公式 | 21 大题材写作公式 · 三翻四震 · 感情线四阶段 | short-write / short-analyze |
| 女频写作 | 女读者偏好 · 情感描写 · 感情线模式 · 对标拆书 | short-write |
| 拆文方法 | 黄金三章 · 情绪曲线 · 结构拆解 · 知乎风格分析 | long-analyze / short-analyze |
| 短篇方法论 | 故事核 · 情节节点 · 爆点分析 · 写作手法 · 节奏分析 · 共鸣分析 · 人物分类 · 平台适配 | short-analyze |
| 拆文实例 | 完整案例拆解 · 模板化输出 | short-analyze |
| 读者画像 | 9 维画像 · 目标读者分析 | long-scan |
| 市场数据 | 题材趋势 · 平台特性 · 采集格式 · 投稿指南 | long-scan / short-scan |
| 封面风格 | 10 大题材视觉风格 · 色彩构图 · 提示词模板 | story-cover |
| 多视角审稿 | 多视角审稿 · 评分标准 · 毒点排查 | story-review |
长篇 起点中文网 · 番茄小说 · 晋江文学城 · 七猫小说 · 刺猬猫
短篇 知乎盐言故事 · 番茄短篇 · 七猫短篇
真实产出样例见 demo/:短篇拆文《曾将爱意私藏》· 长篇拆文《盘龙》· 长篇续写工程《让你管账号,你高燃混剪炸全网》· 封面《剑道独尊》示例图。
这套 skill 现在能让我度过找工作的过渡期 :joy:,希望也能帮到有需要的朋友。
欢迎贡献新 skill、补充知识库、更新市场数据。详见 CONTRIBUTING.md。
name: story-short-write
version: 1.0.0
description: "短篇网文写作。辅助短篇小说创作,从构思到成稿,聚焦情绪拉扯与节奏把控。触发方式:/story-short-write、/写短篇、「帮我写一篇短篇」「写个盐言故事」。"
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}你是短篇网文写作执行器。从构思到成稿,完成一篇完整的短篇小说。
执行规则:短篇以情绪为目标,所有内容为情绪服务。
Agent 兼容性:检查专业 agent 是否可用时,按
.claude/agents/{agent}.md→.opencode/agents/{agent}.md→.codex/agents/{agent}.toml的顺序查找。Codex 原生子代理调用优先使用同名agent_type;如果当前 Codex 运行时返回unknown agent_type或未暴露 custom-agent registry,必须降级为 solo/direct。检测到.zcode/时同样直接 solo/direct,因为 ZCode 3.3.4 不执行项目 custom agents;报告Fallback: project custom agents unavailable -> solo。Claude/OpenCode 兼容面保留subagent_type。Spawn 版本提示(不阻断 spawn):先读取项目根
.story-deployed的agents_version。与本版agents_version: 25不一致时(标记缺失、字段缺失/非整数、小于或大于 25)照常按文件存在性检查并 spawn,同时报告Notice: agents bundle 版本不匹配(项目 {N},本版 25)并提示重新运行/story-setup后新开会话;大于 25 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告Fallback: ... -> solo。
详细规则见 references/short-format.md,写作前必须加载。主会话与 narrative-writer 子代理使用同一套正文格式:正文只允许保存在 正文.md,正文相邻段落之间只允许一个换行符 \n(不得出现空行/\n\n),对话引号风格按项目/平台约定统一(默认半角双引号,盐言可用「」),短篇小节标记全文统一(默认 ###1./###2.)。如果子代理输出与主会话格式不一致,按本格式规范重排后再写入文件。
除了上面的执行规则,构思和写作时遵循:
genre-styles/{题材}.md(核心 10 题材)或 genre-writing-formulas.md(冷门题材)找对应的短篇剧情模式references/genre-styles/{题材}.md——正文的腔调、开篇、钩子、情绪烈度、对话金句、招式、收尾全部切到该题材。核心 10 题材(追妻火葬场 / 世情打脸 / 复仇打脸 / 总裁豪门 / 宅斗宫斗 / 民俗怪谈 / 悬疑 / 甜宠 / 双男主 / 沙雕脑洞)有专属风格包,其中追妻含 现代/古代/民国 时代变体与 小三文学/死人文学 流派分支;冷门题材用 genre-writing-formulas.md 的结构骨架兜底,腔调仍按 short-craft.md 通用底座问用户:「你想让读者读完什么感觉?有没有想写的题材方向或灵感?」
如果用户有明确想法 → 直接进入 Phase 2。
如果用户只有模糊想法 → 帮用户做情绪选择:
| 情绪类型 | 适合场景 | 难度 | 市场热度 | 常配题材包 |
|---|---|---|---|---|
| 意难平 | 虐恋、遗憾、错过 | 中 | 🔥🔥🔥 | 追妻火葬场 / 甜宠(先虐后甜) |
| 反转震撼 | 悬疑、身份错位 | 高 | 🔥🔥🔥 | 悬疑 / 沙雕脑洞(反套路) |
| 爽感释放 | 打脸、逆袭 | 低 | 🔥🔥 | 世情打脸 / 复仇打脸 / 总裁豪门 / 宅斗宫斗(古代上位) |
| 治愈温暖 | 成长、亲情、友情 | 中 | 🔥🔥 | 甜宠 / 双男主(救赎线) |
| 细思极恐 | 悬疑、心理 | 高 | 🔥 | 悬疑 / 民俗怪谈 |
| 共鸣感动 | 现实、职场、婚姻 | 中 | 🔥🔥🔥 | 世情打脸(共鸣模式) / 追妻火葬场(小三文学) |
如果用户有参考小说,先用
/story-short-analyze拆解。默认输出存入项目根目录拆文库/{书名}/;如用户指定当前短篇引用目录,则可输出/同步到{短篇标题}/对标/{书名}/。写作时会自动查找并读取这些拆文结果,不需要用户手动复制到 prompt。
拆文库/对标关系:
拆文库/= analyze skill 的原始产出(数据源),位于项目根目录。对标/= 当前短篇的引用视图,位于{短篇标题}/对标/。短篇写作优先读取{短篇标题}/对标/{书名}/,不存在则读取项目根拆文库/{书名}/。
推荐目录结构:
项目根/
├── 拆文库/
│ └── {书名}/
│ ├── 拆文报告.md
│ ├── 情节节点.md
│ └── 写作手法.md
└── {短篇标题}/
├── 设定.md
├── 小节大纲.md
├── 正文.md
└── 对标/
└── {书名}/
├── 拆文报告.md
├── 情节节点.md
└── 写作手法.md
对标发现(先于下方反应式加载):项目根 拆文库/ 有拆过的短篇时,先按题材主动推荐一本对标,不要被动等用户开口。
ls 拆文库/ 列书目;先从当前项目目录名和 设定.md「基本信息」识别本篇标题,排除同名或来源指向当前 正文.md 的 拆文库/{当前书}/。story-import 生成的本书拆文分析属于续写基线,不是对标候选。排除后为空 → 跳过(无对标按题材包写,见 Phase 1 情绪→题材包表)。拆文库/{书}/_meta.json 的 genre_detected,与本篇题材比对,标 同题材 / 弱相关。设定.md「对标摘要」区作主对标,并按上方「拆文库/对标关系」规则把 拆文库/{书}/ 同步到 {短篇标题}/对标/{书}/。如果工作目录下存在 对标/ 或项目根存在 拆文库/,或用户提到参考小说:
先按上方「对标发现」第 1 条的同一口径识别本篇,另排除历史误建的 对标/{当前书}/;排除后没有外部对标时按题材包写,不进入下面几步。
按上述顺序查找 拆文报告.md、情节节点.md、写作手法.md、_meta.json
读 _meta.json.genre_detected,按下表加载对应题材风格包(analyze 识别的题材 → write 的 genre-styles 包),正文腔调/招式随之切换:
analyze 的 genre_detected | 加载 genre-styles/ 包 |
|---|---|
| 追妻(现代 / 古代 / 民国) | 追妻火葬场.md(按「时代变体」节切换身份词与招式) |
| 小三 / 死人文学 | 追妻火葬场.md(「流派分支」节) |
| 世情 / 打脸爽文 / 家庭伦理 | 世情打脸.md |
| 重生复仇 | 复仇打脸.md |
| 豪门 / 总裁(豪门联姻虐恋) | 总裁豪门.md |
| 宫斗宅斗 / 宫斗 / 宅斗 / 古言重生 | 宅斗宫斗.md |
| 民俗 / 怪谈 / 灵异 | 民俗怪谈.md |
| 悬疑 / 推理 / 惊悚 | 悬疑.md |
| 甜宠 / 先虐后甜 / 先婚后爱 | 甜宠.md |
| 双男主 | 双男主.md |
| 沙雕 / 脑洞 / 弹幕 / 系统 | 沙雕脑洞.md |
| 仙侠 / 通用 | 无专属包 → short-craft.md 底座 + genre-writing-formulas.md 兜底 |
读取核心发现:结构段落、情绪曲线、反转位置、铺垫方式、句式节奏、可借鉴技法。把拆文报告里的具体招式对到题材包招式库:拆文给「这一篇怎么做的」,题材包给「这一类通用怎么做」,两者合用——拆文是当前对标书的实证,题材包是该题材的通法
写入本篇 设定.md 的“对标摘要”区,写作时每个场景从中召回 1-2 个相关技法
如只找到原文、未找到拆文报告,提示用户先运行 /story-short-analyze;如用户要求继续,也可只按原文做弱参考
拆文产出格式:analyze 落盘的完整文件树、
_meta.jsonschema、Stage→文件映射,以及「story-short-write 怎么读这些产出」的下游消费规范,见 references/output-contract.md。
多对标书时:参
references/cross-book-recall.md,副对标 anchor 入「对标摘要」区
构思阶段,如果项目已部署 story-architect agent(查找顺序见顶部),可 spawn Agent(subagent_type: "story-architect", prompt: "项目目录:{dir}\n任务类型:短篇构思\n查询参数:{情绪目标+题材方向}") 辅助框架设计。如 agent 不可用,由主线程直接执行。
帮用户确定短篇的核心框架:
## 短篇核心框架
### 基本信息
- 标题(暂定):{}
- 目标字数:{} 字(短篇通常 8000-20000 字)
- 目标平台:{}
- 情绪目标:{读者读完的感受}
### 一句话梗概
{主角 + 困境 + 反转 + 情绪落点}
### 核心反转
- 反转类型:{身份反转/视角反转/动机反转/时间线反转}
- 反转内容:{一句话描述}
- 铺垫线索:{至少 3 个铺垫点}
### 情绪设计
- 开头情绪:{}(强度 {1-10})
- 中段情绪:{}(强度 {1-10})
- 反转情绪:{}(强度 {1-10},峰值维持 ≥2 节)
- 结尾情绪:{}(强度 {1-10})
- 反转高潮不要骤降:反转前 1 节开始升温,反转节达到峰值,反转后 1 节维持峰值不骤降
### 人设速写
- 主角:{一句话人设}
- 关键角色:{一句话人设}
- 关系:{他们之间的关系}
框架确定后,完成设计任务,然后在工作目录下创建文件。
详细步骤和模板见 references/writing-workflow.md。构思时从目标情绪反推剧情,不是从灵感正向构建。按顺序完成:
references/submission-craft.md 定投稿平台(知乎/小程序/番茄),正文视角、矛盾烈度、章末落点随之切换;再读 references/genre-styles/{题材}.md(核心 10 题材)+ 通用底座 references/short-craft.md,从招式库选 2-3 个核心招式(如追妻的白月光触发链 / 信物翻转 / 火葬场预告),写入 设定.md「题材招式」区,全程照此招式与腔调写villain-and-reveal.mdsubmission-craft.md「付费点」:卡脖子断点、付费点前每章 2-3 剧情点、付费点后每章多 1-2);用反推法先想透付费点那一节,再倒排前后。每节可选一个任务卡点,但必须服务情绪升级、证据推进、关系撕裂、反转铺垫或反击动作;没有就不强补设计任务完成后,如果项目已部署 character-designer agent(查找顺序见顶部),可 spawn Agent(subagent_type: "character-designer", prompt: "项目目录:{dir}\n任务类型:角色设定\n查询参数:{人设速写+关系}") 辅助角色设定和语言风格档案。如 agent 不可用,由主线程直接执行。
项目文件结构:文件结构见 Phase 2;设定.md/小节大纲.md 为 Phase 2 产出,正文.md 为 Phase 3 产出。
导入项目续写基线:设定.md 存在「本书续写基线」时先读取,作为已写内容的内部连续性与既有写法约束;它不是对标摘要,不参与主/副对标排序,也不复制到 对标/。
术语说明:Phase 3 按「段」划分叙事结构(开头段/铺垫段/升级段/反转段/结尾段),每段包含若干「小节」(数字编号的 beat)。「场景」指写作时的具体画面。
写前准备(每个场景写前执行 2 步,是核心方法的落地:确认情绪目标 → 召回技法模块):
对标/ 或 拆文库/ 结构化产出,按“对标上下文加载”规则检索与当前场景最相关的结构/情绪/反转/写作手法模块作为参考,并写入“拆文召回摘要”
references/cross-book-recall.md,副对标/参考对标按阶段预算进入"副对标召回摘要";正文只传摘要,不传副书文风或原文写作指令:按三维度揉进逐场景写作,不照搬大纲腔。
…… / —— / — / --。正文写作阶段默认由主会话按 2-3 节/批分批写正文;主会话输出是短篇正文的标准形态,不要求单次 agent spawn 完成 8000+ 字全文。
正文.md 尾部 300-500 字再续写。Agent(subagent_type: "narrative-writer", prompt: ...),只传项目目录、输出文件、情绪目标、题材风格包、小节大纲、角色、主/副对标召回摘要、格式硬约束和写作硬约束。short-format.md、题材包和 short-craft.md 为准。正文.md 前都按同一格式规范重排,保证主会话与子代理输出一致。⚠️ 硬约束:每节 ≥ 800 字 / 50-65 行。
题材例外:爽文、打脸、系统流等高信息密度题材可降至 ≥ 500 字/节(见 genre-writing-formulas.md 各题材速查表),但不得低于 500 字。
写完每节后必须统计字数和行数。不足 800 字(高信息密度题材不足 500 字)的节不得跳过,必须补充更多子事件/对话来补足后再写下一节。整篇完成后总字数必须 ≥ 8000 字。
字数统计必须跨平台可执行:优先使用 Python 字符统计:for PYBIN in python3 python py; do "$PYBIN" -c "" 2>/dev/null && break; done; "$PYBIN" -c "from pathlib import Path; print(len(Path('文件路径').read_text(encoding='utf-8')))"。不要直接调 python3,Windows 上 python3 会落到 Microsoft Store 占位程序、以 exit 49 静默失败;上面的探测会按 python3→python→py 选出真正可用的解释器。Windows / DeepSeek / Claude Code 组合下不要让模型自行估算字数;wc -m 仅作为 macOS/Linux 备选,禁止使用 wc -c(字节数)。如果当前 agent/工具环境没有 Bash/Python 权限,必须明确声明“未完成机器字数验证”,并按行数速算作为临时估计,不得声称已通过字数硬验证。
⚠️ 字数不足 = 章节未完成。禁止在字数未达标时结束章节。必须继续展开场景直到达标。
节数守恒:正文节数必须等于小节大纲规划节数。不得合并多节为一节。如果写作中发现某节不需要独立存在,应回到大纲阶段调整,而非在写作时偷减。
节长达标流程:
节长验证(分批写作,每批写完后执行): 分批写作:每次输出 2-3 节,写完后统一检查本批所有节的字数。 如果任何一节 < 800 字(高信息密度题材 < 500 字)→ 补充更多子事件/对话来补足后再写下一批。 禁止跳过未达标的小节。
节长速算:平均每行 15 字 × 55 行 ≈ 825 字。写到第 30 行时如果还不到 500 字,说明子事件数量不够,需要补充更多子事件或对话。
每个小节按「三维度揉进」写作(详见 short-craft.md 第 10 节):每个子事件将发生、感知、反应三个维度揉进同一段连续正文,子事件合计 ≥150 字。维度揉进不等于按维度分段——禁止"先写发生再补感知再补反应"的堆叠写法;也不等于一段到底,按新动作/新物件/新信息/新对话断段。长度只是诊断,先判断是否完整戏剧单元;混入多个动作/信息才拆,完整推理、氛围或情绪链可以保留稍长段。
写完后对照 小节大纲.md 检查:每个子事件三个维度都揉进了?本节情绪到位?伏笔/物件已植入?新增任务卡点是否卡出了情绪、证据或关系变化(删掉无损则压缩)?节长 <800 字 → 补充更多子事件/对话后再写下一节。
按以下结构分段写:
目标:3 句话内抓住读者。必须包含一个开篇钩子(从 hooks-chapter.md 选择类型)。
先写导语:正文开头前先按 references/submission-craft.md「导语」写一条 150-220 字导语——四维骨架(起因+核心冲突+人设底色+情绪反转)配黄金三角(具体物件+信息差+留白钩子),一句一段(黑岩/盐言导语形态;番茄导语按 short-format.md 短段叙织)——完整句各自独立成段,不是拆成三字碎句。它就是正文开头的头几段,写好顺势往下接、不重写,所以首句同样守下面的开头零环境和前 100 字事件密度≥3(首句是事件/动作/信息炸弹,不是背景或弧线概括),剧透钩子放导语后半。
技法指令:前 100 字事件密度 ≥ 3,不做背景铺垫,直接上事件链。
开头零环境规则(默认适用;悬疑、惊悚、灾难、强氛围题材可例外):
开头技巧:
| 技巧 | 说明 | 示例 |
|---|---|---|
| 冲突前置 | 第一句就是矛盾 | 「离婚协议放在桌上,他已经签了。」 |
| 信息差钩 | 给读者一个角色不知道的信息 | 「她不知道,对面那个男人已经在计划第三次了。」 |
| 反常行为 | 用一个不合常理的行为引起好奇 | 「她把订婚戒指冲进了马桶。」 |
| 重生反常 | 重生后做前世绝不会做的事 | 「沈栀心念成灰,支着一口气找到了媒婆:郭家的那个天阉,我来嫁。」 |
| 超自然身份 | 开篇揭示非人类身份 | 「我是世上仅存的红衣厉鬼。我不知自己是怎么死的。」 |
| 灵魂旁观 | 以灵魂视角描述死亡现场 | 「我的尸体躺在透明棺材里,三个哥哥在外面笑着说:她演得真像。」 |
| 悬念句 | 抛出一个需要解释的事实 | 「我死后的第三天,老公发了一条朋友圈。」 |
| 替嫁被弃 | 被迫接受不公正的命运 | 「三个月后,我代替皇后的嫡亲公主坐上了去漠北和亲的轿撵。」 |
| 代入式提问 | 直接让读者产生共鸣 | 「你有没有在深夜接到过一个不该接的电话?」 |
结尾类型:
| 类型 | 效果 | 适合情绪 |
|---|---|---|
| 余韵式 | 不说完,让读者自己想 | 意难平 |
| 呼应式 | 首尾呼应,形成闭环 | 治愈、成长 |
| 开放式 | 留下悬念 | 细思极恐 |
| 反转再反转 | 结尾再来一个小反转 | 震惊 |
| 金句式 | 一句话点题 | 共鸣 |
node scripts/check-ai-patterns.js --check --fail-on=blocking 正文.md 无 blocking 命中;其余提示先通读,确属问题再改node scripts/check-degeneration.js --check 正文.md 无 blocking 退化命中(复读/截断/工程词泄漏)中文文本统计注意事项:
wc -c 统计的是字节数,禁止用于字数统计,也禁止模型估算字数wc -l 是安全的不通过 → 回退补足,不得进入精修。
加载 references/writing-workflow.md 中的精修清单完成检查。
重点:开头钩子、情绪曲线、反转铺垫、每句话价值、格式规范、AI 腔排查。文件模式先运行 node scripts/check-ai-patterns.js --check --fail-on=blocking 正文.md:blocking 先改正文并复扫;其他提示只作为读感风险,功能性写法标 [需复核]。再运行 node scripts/normalize-punctuation.js 正文.md 做标点兜底,并运行 node scripts/check-degeneration.js --check 正文.md;退化 blocking 要重新生成受影响段落,不靠润色。
精修阶段,如果项目已部署对应 agent,可 spawn:
Agent(subagent_type: "narrative-writer", prompt: "项目目录:{dir}\n任务描述:去AI味+格式检查\n检查范围:{正文文件}\n删除优先:每条 AI 味项先判能否删除——删后不丢伏笔/钩子/角色/情节/必要信息的直接删,会丢才润色(删除受比例上限与字数下限约束,跌破下限改降AI重写)\n必须检查:先否定再肯定的翻转句式,发现后直接改成后项或动作细节;检查像/好像/仿佛/如同等比喻是否成片堆叠,确属堆叠时只留最有功能的少数比喻,其余回到具体画面;检查是否连续使用头皮发紧/眼皮一跳/心口一沉/胃里翻涌等精致戏剧反应,能写普通动作/普通感觉就写普通动作/普通感觉;已有手机/聊天记录/公告/账单/病历/证据截图等信息,保留为角色看到或处理的场内载体,不改成叙述者解释;任务卡点只在角色本来有要办的事且能加重情绪/证据/关系/反转时使用,不为自然感补流程") — 执行去AI味(7 Gate)和格式合规检查Agent(subagent_type: "consistency-checker", prompt: "项目目录:{dir}\n检查范围:{正文文件}\n检查类型:事实冲突+伏笔断线+角色属性不一致") — 执行一致性检查如 agent 不可用,由主线程直接执行。
正文洁净规则:
<!-- 自检 --> 或类似的检查标记注释不通过 → 回退补足。
流水线: 短篇 位置: 写作(第 3/3 步)
| 时机 | 跳转到 | 命令 |
|---|---|---|
| 有参考小说想对标 | story-short-analyze | /story-short-analyze → 输出存入 拆文库/{书名}/ |
| 写完,去 AI 味 | story-deslop | /story-deslop |
| 想自检 | 本 skill 质量自检 | 用 Phase 4 自检流程 + references/quality-checklist.md 逐项核对 |
| 需要市场方向 | story-short-scan | /story-short-scan |
| 设定太大,适合长篇 | story-long-write | /story-long-write |
按需加载以下文件。写作时同时加载 ≤ 3 个:
有些主题散在多个文件里。下表给每个主题一个权威文件(先读它,通常够用),配套文件只在需要那个角度时再加载。括号是该文件里对应的小节。
| 主题 | 权威文件(先读) | 配套文件(按角度补充) |
|---|---|---|
| 情绪外化(怎么写情绪) | references/short-craft.md 第2节(情绪直接写+后接具体反应、三段对照、改写四步——替代旧机械替换表) | 各 genre-styles/ 包的「情绪烈度与模式」 |
| 情绪设计(情感结构) | references/emotional-methods.md(情感三板斧 + 拉扯节奏 + 失败模式) | references/genre-writing-techniques.md(情绪操控核心法则 / 情绪三层次) |
| 反转 | references/reversal-toolkit.md(反转类型 / 铺垫 / 有效性自检) | references/villain-and-reveal.md(真相揭露机制 / 反转有效性自检) |
| 反派揭露 | references/villain-and-reveal.md(反派模板 / 揭露机制 / 报应设计) | references/reversal-toolkit.md |
| 人物 | 各 genre-styles/{题材}.md 的「对话风格」「招式库」(受害者-复仇者主角声线、白月光软刀、施害者道德绑架人设,corpus-grounded) | references/villain-and-reveal.md(反派/揭露)· references/genre-writing-techniques.md(三层标签反差 / 人设从缺点开始)· references/dialogue-mastery.md(声线差异) |
| 钩子 | references/hooks-chapter.md(章节/开篇钩子类型) | references/hooks-paragraph.md(段落钩子)· references/hooks-suspense.md(悬念设计) |
| 女频写作 | 对应 genre-styles/{题材}.md(追妻火葬场 / 总裁豪门 / 宅斗宫斗 / 甜宠 / 世情打脸的题材声线、虐爽比例、招式) | references/genre-writing-techniques.md(女频读者心理与写作技法 / 感情线四阶段推进法)· references/emotional-methods.md(情绪拉扯) |
| 题材风格 | references/genre-styles/{题材}.md(核心 10 题材的腔调/开篇/钩子/情绪烈度/招式/收尾,corpus-grounded) | references/genre-writing-formulas.md(冷门题材结构骨架)· references/genre-writing-techniques.md(核心梗 / 卖点 / 通用技法) |
| 开头 | 各 genre-styles/{题材}.md 的「开篇范式」(关系锚 + 全弧剧透导语 + 火葬场预告,真实开篇范例)+ short-craft.md 第12节(开头事件密度) | references/hooks-chapter.md(开篇钩子类型)· references/hooks-paragraph.md(段钩密度) |
| 格式与节奏 | references/short-format.md(短篇正文格式,两平台模板) | references/short-craft.md(情绪直接写+后接具体反应/三维度揉进/疏密)· references/writing-workflow.md(设计/精修工作流) |
| 对话 | references/dialogue-mastery.md(对话技法主文件:差异化/潜台词/对话节奏) | references/short-craft.md(三类台词与对话权力博弈)· 各 genre-styles/ 包的真实金句库 |
| 去AI味 | references/short-deslop.md(短篇专属:只杀真·AI腔,不杀情绪烈度/审判句/火葬场预告) | references/banned-words.md(禁用词扫描)· scripts/check-ai-patterns.js(AI句式复扫)· references/quality-checklist.md(成稿检查) |
评论 (0)
暂无评论,成为第一个评论者吧!