webnovel-plan by lingfengqaq/webnovel-writer
npx skills add https://github.com/lingfengqaq/webnovel-writer --skill webnovel-planPurpose: refine 总纲 into volume + chapter outlines. Do not redesign the global story. Setting policy: 先基于 init 产出的总纲+世界观补齐设定集基线;再在卷纲完成后,直接对现有设定集做增量补充。
D:\wk\xiaoshuo,书项目为 D:\wk\xiaoshuo\凡人资本论。PROJECT_ROOT 为真实书项目根(必须包含 .webnovel/state.json),后续所有读写路径都以该目录为准。环境设置(bash 命令执行前):
export WORKSPACE_ROOT="${CLAUDE_PROJECT_DIR:-$PWD}"
if [ -z "${CLAUDE_PLUGIN_ROOT}" ] || [ ! -d "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-plan" ]; then
echo "ERROR: 未设置 CLAUDE_PLUGIN_ROOT 或缺少目录: ${CLAUDE_PLUGIN_ROOT}/skills/webnovel-plan" >&2
exit 1
fi
export SKILL_ROOT="${CLAUDE_PLUGIN_ROOT}/skills/webnovel-plan"
if [ -z "${CLAUDE_PLUGIN_ROOT}" ] || [ ! -d "${CLAUDE_PLUGIN_ROOT}/scripts" ]; then
echo "ERROR: 未设置 CLAUDE_PLUGIN_ROOT 或缺少目录: ${CLAUDE_PLUGIN_ROOT}/scripts" >&2
exit 1
fi
export SCRIPTS_DIR="${CLAUDE_PLUGIN_ROOT}/scripts"
export PROJECT_ROOT="$(python "${SCRIPTS_DIR}/webnovel.py" --project-root "${WORKSPACE_ROOT}" where)"
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
references/outlining/outline-structure.md、references/outlining/plot-frameworks.mdUse progressive disclosure and load only what current step requires:
cat "$PROJECT_ROOT/.webnovel/state.json"
cat "$PROJECT_ROOT/大纲/总纲.md"
Optional (only if they exist):
设定集/主角组.md设定集/女主卡.md设定集/反派设计.md设定集/世界观.md设定集/力量体系.md设定集/主角卡.md.webnovel/idea_bank.json (inherit constraints)If 总纲.md lacks volume ranges / core conflict / climax, ask the user to fill those before proceeding.
目标:在不推翻现有内容的前提下,让设定集从“骨架模板”进入“可规划可写作”的基线状态。
输入来源:
大纲/总纲.md设定集/世界观.md设定集/力量体系.md设定集/主角卡.md设定集/反派设计.md执行规则(必须):
基线补齐最小要求:
设定集/世界观.md:世界规则边界、社会结构、关键地点用途。设定集/力量体系.md:境界链/能力限制/代价与冷却。设定集/主角卡.md:欲望、缺陷、初始资源与限制。设定集/反派设计.md:小/中/大反派层级与主角镜像关系。目标:先把本卷“承诺→危机递增→中段反转→最低谷→大兑现+新钩子”钉死,避免卷中段漂移。
Load template:
cat "${SKILL_ROOT}/../../templates/output/大纲-卷节拍表.md"
Must satisfy (hard requirements):
无(理由:...)Write output:
@'
{beat_sheet_content}
'@ | Set-Content -Encoding UTF8 "$PROJECT_ROOT/大纲/第{volume_id}卷-节拍表.md"
Completion criteria:
大纲/第{volume_id}卷-节拍表.md 存在且非空目标:为本卷建立时间轴基准,确保章节间时间推进逻辑自洽,避免"第一章灾变第二章火拼"的时间跳跃问题。
Load template:
cat "${SKILL_ROOT}/../../templates/output/大纲-卷时间线.md"
Must satisfy (hard requirements):
Write output:
@'
{timeline_content}
'@ | Set-Content -Encoding UTF8 "$PROJECT_ROOT/大纲/第{volume_id}卷-时间线.md"
Completion criteria:
大纲/第{volume_id}卷-时间线.md 存在且非空Load genre profile and apply standards:
cat "${SKILL_ROOT}/../../references/genre-profiles.md"
cat "${SKILL_ROOT}/../../references/shared/strand-weave-pattern.md"
Optional (only if爽点结构需要细化):
cat "${SKILL_ROOT}/../../references/shared/cool-points-guide.md"
Optional (only if需要补强卷级冲突链与强度分层):
cat "${SKILL_ROOT}/references/outlining/conflict-design.md"
Load beat sheet (must exist):
cat "$PROJECT_ROOT/大纲/第{volume_id}卷-节拍表.md"
Extract for current genre:
Based on genre profile, distribute chapters:
Weaving pattern (recommended):
For 电竞/直播文/克苏鲁, apply dedicated volume pacing template:
cat "${SKILL_ROOT}/references/outlining/genre-volume-pacing.md"
Based on genre profile:
Distribution rule :
If idea_bank.json exists:
cat "$PROJECT_ROOT/.webnovel/idea_bank.json"
Calculate trigger frequency:
Use this template and fill from 总纲 + idea_bank:
# 第 {volume_id} 卷:{卷名}
> 章节范围: 第 {start} - {end} 章
> 核心冲突: {conflict}
> 卷末高潮: {climax}
## 卷摘要
{2-3 段落概述}
## 关键人物与反派
- 主要登场角色:
- 反派层级:
## Strand Weave 规划
| 章节范围 | 主导 Strand | 内容概要 |
|---------|------------|---------|
## 爽点密度规划
| 章节 | 爽点类型 | 具体内容 | 强度 |
|------|---------|---------|------|
## 伏笔规划
| 章节 | 操作 | 伏笔内容 |
|------|------|---------|
## 约束触发规划(如有)
- 反套路规则:每 N 章触发一次
- 硬约束:贯穿全卷
Batching rule:
60 章:4+ 批
Optional (only if需要钩子/节奏细分):
cat "${SKILL_ROOT}/../../references/reading-power-taxonomy.md"
Optional (only if需要章节微结构/标题策略细化):
cat "${SKILL_ROOT}/references/outlining/chapter-planning.md"
For each chapter, determine:
1. Strand assignment (follow volume skeleton distribution)
2. 爽点设计 (based on Strand and position)
3. 钩子设计 (based on next chapter's Strand)
4. 反派层级 (based on volume skeleton)
5. 关键实体 (new or important)
6. 约束检查 (if idea_bank exists)
Chapter format (include 反派层级 for context-agent):
### 第 {N} 章:{标题}
- 目标: {20字以内}
- 阻力: {20字以内}
- 代价: {20字以内}
- 时间锚点: {末世第X天 时段/仙历X年X月X日/具体日期+时段}
- 章内时间跨度: {如 3小时/半天/1天}
- 与上章时间差: {如 紧接/6小时/1天/跨夜}
- 倒计时状态: {事件A D-3 -> D-2 / 无}
- 爽点: {类型} - {30字以内}
- Strand: {Quest|Fire|Constellation}
- 反派层级: {无/小/中/大}
- 视角/主角: {主角A/主角B/女主/群像}
- 关键实体: {新增或重要出场}
- 本章变化: {30字以内,优先可量化变化}
- 章末未闭合问题: {30字以内}
- 钩子: {类型} - {30字以内}
时间字段说明 :
字段说明 :
Save after each batch:
@'
{batch_content}
'@ | Add-Content -Encoding UTF8 "$PROJECT_ROOT/大纲/第{volume_id}卷-详细大纲.md"
目标:卷纲写完后,把本卷新增事实写回“现有设定集文件”,确保后续写作可直接读取。
输入来源:
大纲/第{volume_id}卷-节拍表.md大纲/第{volume_id}卷-详细大纲.md写回策略(必须):
冲突处理(硬规则):
BLOCKER 并停止 state 更新。1. 爽点密度检查
2. Strand 比例检查 Count chapters by Strand and compare with genre profile:
If deviation > 15%, adjust chapter assignments.
3. 总纲一致性检查
4. 约束触发频率检查 (if idea_bank exists)
5. 完整性检查 Every chapter must have:
6. 时间线一致性检查(新增)
大纲/第{volume_id}卷-时间线.md7. 设定补全检查
BLOCKER 数量为 0;若 >0,必须先裁决,不得进入 state 更新Update state (include chapters range):
python "${SCRIPTS_DIR}/webnovel.py" --project-root "$PROJECT_ROOT" update-state -- \
--volume-planned {volume_id} \
--chapters-range "{start}-{end}"
Final check:
大纲/第{volume_id}卷-节拍表.md大纲/第{volume_id}卷-时间线.md大纲/第{volume_id}卷-详细大纲.mdBLOCKER 未裁决If any hard fail triggers:
Next steps:
Weekly Installs
71
Repository
GitHub Stars
1.7K
First Seen
Jan 23, 2026
Security Audits
Installed on
opencode67
cursor62
gemini-cli61
codex61
github-copilot59
amp58
BMAD工作流编排与SSD结构化系统设计 - 多代理AI开发流程自动化
10,600 周安装
Benchling Python SDK与REST API集成指南:生物信息学自动化与生命科学研发
178 周安装
Hypogenic:基于LLM的自动化科学假设生成与测试框架,加速AI科研发现
179 周安装
Arboreto:基因调控网络推断Python库,支持GRNBoost2/GENIE3算法与分布式计算
180 周安装
Clerk 身份验证模板 - Next.js 14/15 App Router 完整设置与路由保护
181 周安装
Next.js服务端与客户端组件选择指南:TypeScript最佳实践与性能优化
180 周安装
Fastify TypeScript 开发指南:构建高性能、类型安全的 Node.js API
181 周安装