From webnovel-writer
Initializes web novel projects via phased interactions collecting genre, characters, worldbuilding, and constraints; generates state.json, settings, outlines, and idea bank for direct planning/writing.
npx claudepluginhub lingfengqaq/webnovel-writer --plugin webnovel-writerThis skill is limited to using the following tools:
- 通过结构化交互收集足够信息,避免“先生成再返工”。
references/creativity/anti-trope-game.mdreferences/creativity/anti-trope-rules-mystery.mdreferences/creativity/anti-trope-urban.mdreferences/creativity/anti-trope-xianxia.mdreferences/creativity/category-constraint-packs.mdreferences/creativity/creative-combination.mdreferences/creativity/creativity-constraints.mdreferences/creativity/inspiration-collection.mdreferences/creativity/market-positioning.mdreferences/creativity/market-trends-2026.mdreferences/creativity/selling-points.mdreferences/genre-tropes.mdreferences/system-data-flow.mdreferences/worldbuilding/character-design.mdreferences/worldbuilding/faction-systems.mdreferences/worldbuilding/power-systems.mdreferences/worldbuilding/setting-consistency.mdreferences/worldbuilding/world-rules.mdConducts multi-round deep research on GitHub repos via API and web searches, generating markdown reports with executive summaries, timelines, metrics, and Mermaid diagrams.
Dynamically discovers and combines enabled skills into cohesive, unexpected delightful experiences like interactive HTML or themed artifacts. Activates on 'surprise me', inspiration, or boredom cues.
Generates images from structured JSON prompts via Python script execution. Supports reference images and aspect ratios for characters, scenes, products, visuals.
.webnovel/state.json、设定集/*、大纲/总纲.md、.webnovel/idea_bank.json。/webnovel-plan 与 /webnovel-write 可直接运行。init_project.py。Read/Grep/Bash/Task/AskUserQuestion/WebSearch/WebFetch 辅助收集。采用分级加载,避免一次性灌入全部资料:
路径约定:
references/... 相对当前 skill 目录(${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/...)。templates/... 相对插件根目录(${CLAUDE_PLUGIN_ROOT}/templates/...)。默认加载清单:
references/genre-tropes.mdtemplates/genres/{genre}.md../../templates/golden-finger-templates.mdreferences/worldbuilding/faction-systems.mdreferences/creativity/market-trends-2026.mdreferences/genre-tropes.md
references/system-data-flow.md
/plan、/write 的数据流一致性检查。references/worldbuilding/character-design.md
references/worldbuilding/faction-systems.md
references/worldbuilding/power-systems.md
references/worldbuilding/setting-consistency.md
references/worldbuilding/world-rules.md
references/creativity/creativity-constraints.md
references/creativity/category-constraint-packs.md
references/creativity/creative-combination.md
references/creativity/inspiration-collection.md
references/creativity/selling-points.md
references/creativity/market-positioning.md
references/creativity/market-trends-2026.md
references/creativity/anti-trope-xianxia.md
references/creativity/anti-trope-urban.md
references/creativity/anti-trope-game.md
references/creativity/anti-trope-rules-mystery.md
Read/Grep:读取项目上下文与参考文件(README.md、CLAUDE.md、templates/genres/*、references/*)。Bash:执行 init_project.py、文件存在性检查、最小验证命令。Task:拆分并行子任务(如题材映射、约束包候选生成、文件验证)。AskUserQuestion:用于关键分歧裁决、候选方案选择、最终确认。WebSearch:用于检索最新市场趋势、平台风向、题材数据(可带域名过滤)。WebFetch:用于抓取已确定来源页面内容并做事实核验。环境设置(bash 命令执行前):
export WORKSPACE_ROOT="${CLAUDE_PROJECT_DIR:-$PWD}"
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"
必须做:
${CLAUDE_PLUGIN_ROOT}/scripts${SCRIPTS_DIR}/webnovel.pypython "${SCRIPTS_DIR}/webnovel.py" --project-root "${WORKSPACE_ROOT}" wherereferences/system-data-flow.md(用于校对 init 产物与 plan/write 输入链路)references/genre-tropes.mdtemplates/genres/(仅在用户选定题材后按需读取)输出:
收集项(必收):
题材集合(用于归一化与映射):
交互方式:
收集项(必收):
收集项(可选):
收集项(必收):
收集项(条件必收):
收集项(必收):
收集项(题材相关):
流程:
references/creativity/creativity-constraints.md 的 8.1 五维评分),辅助用户决策。备注:
必须输出“初始化摘要草案”并让用户确认:
确认规则:
{
"project": {
"title": "",
"genre": "",
"target_words": 0,
"target_chapters": 0,
"one_liner": "",
"core_conflict": "",
"target_reader": "",
"platform": ""
},
"protagonist": {
"name": "",
"desire": "",
"flaw": "",
"archetype": "",
"structure": "单主角"
},
"relationship": {
"heroine_config": "",
"heroine_names": [],
"heroine_role": "",
"co_protagonists": [],
"co_protagonist_roles": [],
"antagonist_tiers": {},
"antagonist_level": "",
"antagonist_mirror": ""
},
"golden_finger": {
"type": "",
"name": "",
"style": "",
"visibility": "",
"irreversible_cost": "",
"growth_rhythm": ""
},
"world": {
"scale": "",
"factions": "",
"power_system_type": "",
"social_class": "",
"resource_distribution": "",
"currency_system": "",
"currency_exchange": "",
"sect_hierarchy": "",
"cultivation_chain": "",
"cultivation_subtiers": ""
},
"constraints": {
"anti_trope": "",
"hard_constraints": [],
"core_selling_points": [],
"opening_hook": ""
}
}
未满足以下条件前,禁止执行 init_project.py:
project_root 必须由书名安全化生成(去非法字符,空格转 -)。. 开头,自动前缀 proj-。${CLAUDE_PLUGIN_ROOT})。python "${SCRIPTS_DIR}/webnovel.py" init \
"{project_root}" \
"{title}" \
"{genre}" \
--protagonist-name "{protagonist_name}" \
--target-words {target_words} \
--target-chapters {target_chapters} \
--golden-finger-name "{gf_name}" \
--golden-finger-type "{gf_type}" \
--golden-finger-style "{gf_style}" \
--core-selling-points "{core_points}" \
--protagonist-structure "{protagonist_structure}" \
--heroine-config "{heroine_config}" \
--heroine-names "{heroine_names}" \
--heroine-role "{heroine_role}" \
--co-protagonists "{co_protagonists}" \
--co-protagonist-roles "{co_protagonist_roles}" \
--antagonist-tiers "{antagonist_tiers}" \
--world-scale "{world_scale}" \
--factions "{factions}" \
--power-system-type "{power_system_type}" \
--social-class "{social_class}" \
--resource-distribution "{resource_distribution}" \
--gf-visibility "{gf_visibility}" \
--gf-irreversible-cost "{gf_irreversible_cost}" \
--currency-system "{currency_system}" \
--currency-exchange "{currency_exchange}" \
--sect-hierarchy "{sect_hierarchy}" \
--cultivation-chain "{cultivation_chain}" \
--cultivation-subtiers "{cultivation_subtiers}" \
--protagonist-desire "{protagonist_desire}" \
--protagonist-flaw "{protagonist_flaw}" \
--protagonist-archetype "{protagonist_archetype}" \
--antagonist-level "{antagonist_level}" \
--target-reader "{target_reader}" \
--platform "{platform}"
idea_bank.json写入 .webnovel/idea_bank.json:
{
"selected_idea": {
"title": "",
"one_liner": "",
"anti_trope": "",
"hard_constraints": []
},
"constraints_inherited": {
"anti_trope": "",
"hard_constraints": [],
"protagonist_flaw": "",
"antagonist_mirror": "",
"opening_hook": ""
}
}
必须补齐:
执行检查:
test -f "{project_root}/.webnovel/state.json"
find "{project_root}/设定集" -maxdepth 1 -type f -name "*.md"
test -f "{project_root}/大纲/总纲.md"
test -f "{project_root}/.webnovel/idea_bank.json"
成功标准:
state.json 存在且关键字段不为空(title/genre/target_words/target_chapters)。世界观.md、力量体系.md、主角卡.md、金手指设计.md。总纲.md 已填核心主线与约束字段。idea_bank.json 已写入且与最终选定方案一致。触发条件:
idea_bank.json 缺失或内容不一致。恢复流程:
init_project.py;