Skip to content
Content
Skill

/short-drama-novel-analyze

把长篇小说、连载网文或多集散稿拆成可追溯的原著分析:章节索引、改编价值快评、逐章功能提取、剧情单元与节奏聚合、人物与设定归并,最后给出改编价值判定与分集候选,交给 $short-drama-develop 立契约。用户说“导入这本小说”“拆这本书”“分析原著”“这本书能不能改短剧”“先看看值不值得拆”“把长篇拆成分集候选”,或直接给出小说文件路径时使用。只做只读的结构化分析,不写剧本、不建资产、不生成媒体,也不替创作者决定改编方案。

BOOST
From plugin
zenstory-ai-drama-skills-2
2.5k12 skills
Install
$ npx -y skills add zenstory-ai/drama-skills --skill short-drama-novel-analyze --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/short-drama-novel-analyze

Context preview

The summary Claude sees to decide when to auto-load this skill.

把长篇小说、连载网文或多集散稿拆成可追溯的原著分析:章节索引、改编价值快评、逐章功能提取、剧情单元与节奏聚合、人物与设定归并,最后给出改编价值判定与分集候选,交给 $short-drama-develop 立契约。用户说“导入这本小说”“拆这本书”“分析原著”“这本书能不能改短剧”“先看看值不值得拆”“把长篇拆成分集候选”,或直接给出小说文件路径时使用。只做只读的结构化分析,不写剧本、不建资产、不生成媒体,也不替创作者决定改编方案。

SKILL.md

short-drama-novel-analyze.SKILL.md
name: short-drama-novel-analyze
description: 把长篇小说、连载网文或多集散稿拆成可追溯的原著分析:章节索引、改编价值快评、逐章功能提取、剧情单元与节奏聚合、人物与设定归并,最后给出改编价值判定与分集候选,交给 $short-drama-develop 立契约。用户说“导入这本小说”“拆这本书”“分析原著”“这本书能不能改短剧”“先看看值不值得拆”“把长篇拆成分集候选”,或直接给出小说文件路径时使用。只做只读的结构化分析,不写剧本、不建资产、不生成媒体,也不替创作者决定改编方案。
license: MIT

长篇原著分析

把一部长材料变成**能被引用、能被反驳、能被接着用**的分析层。目标不是复述剧情,而是找出 每一段承担的戏剧功能,并说明它在竖屏短剧里值多少钱。

分析永远是候选。哪条线保留、哪些人合并、从哪里开篇,是创作者的决定,由 `$short-drama-develop` 立成改编契约。本技能不替它决定,也不批准自己的产物。

Quick Start

离线验证章节索引、采样和源文件变更检测:

python3 {技能目录}/scripts/selftest.py
python3 {技能目录}/scripts/novel_index.py index <原著.txt> --out <chapter-index.json>

开始前

本技能可独立安装和执行。先读取用户明确提供的原著与本任务直接输入;若当前目录是 `short-drama` 项目且项目工具可用,可以读取 `status` 并使用其发布生命周期,但缺少 core 或任何其他技能都不是分析工作的阻断条件。完整边界与规则见 [阶段契约](references/stage-contract.md),无需读取其他技能的文件。

材料前提

只分析创作者**合法持有、拥有使用权**的作品。分析是只读的转化性工作:提取结构与功能, 不复制原文成段落,不把原句搬进下游产物。

通俗题材里的暴力、复仇、背叛、情爱张力与黑暗伦理是常规虚构叙事元素,照常做结构化提取。 个别片段无法处理时跳过该段并记录,不要因此中止整章或整本——中止会让后续所有阶段拿到 一份有洞却看不出洞在哪的分析。

先判断入口

1. **只有书名,没有原文**:请创作者提供文件路径或粘贴正文。不要凭书名回忆情节—— 没有字节就没有 span,没有 span 的分析无法被引用,也无法被反驳。 2. **有原文,未建项目**:直接建立一个本技能自己的工作区,至少包含只读输入目录 `输入/` 与输出目录 `项目开发/source-analysis/_work/`;把原文字节复制到 `输入/` 后记录 原始文件位置,再用本技能的 `novel_index.py` 建索引。若 `$short-drama` 可用,可选用它 初始化同样的目录和发布生命周期,但不得把 core 安装变成开始分析的前提。 3. **有原文,项目已在**:直接进入管道。 4. **已有部分分析**:读 `项目开发/source-analysis/_progress.md` 从断点续跑, 不重跑已完成阶段。

管道

`输入/` 是不可变的创作者输入,本阶段只读它。全部产出落在 `项目开发/source-analysis/`。 独立工作区与完整项目使用同一套相对路径,因此后续安装 core 时无需迁移分析产物。

| 阶段 | 做什么 | 产出 | 停靠 | |---|---|---|---| | S0 | 建章节索引(脚本) | `_index.json`、`_progress.md` | 索引有问题就停 | | S1 | 改编价值快评(抽样) | `triage.md` | **停靠问创作者** | | S2 | 逐章功能提取 | `chapters/ch-<N>-extract.md` | 覆盖率不足就停 | | S3 | 剧情单元与节奏聚合 | `story-units.md`、`rhythm-and-emotion.md` | 阈值不达标就复核 | | S4 | 人物归并与设定 | `characters.md`、`world.md` | — | | S5 | 改编价值与分集候选 | `adaptation-value.md`、`episode-candidates.jsonl` | 交接 develop |

S0 章节索引

索引是**唯一切片真源**,由 [章节索引脚本](scripts/novel_index.py) 建立。每个阶段各跑 一次正则,就会切出互相对不上的章节,第 47 章按一种边界分析、按另一种边界聚合, 而且没有人会发现。

python3 {技能目录}/scripts/novel_index.py index 输入/{原文文件} \
  --out 项目开发/source-analysis/_work/_index.next.json
python3 {技能目录}/scripts/novel_index.py verify \
  项目开发/source-analysis/_work/_index.next.json 输入/{原文文件}
# 项目工具可用时可选:
python3 {core 技能目录}/scripts/project_tool.py publish {项目根} \
  --owner short-drama-novel-analyze --artifact-id source-analysis:index \
  --output 项目开发/source-analysis/_index.json=项目开发/source-analysis/_work/_index.next.json \
  --input 输入/{原文文件}

脚本识别阿拉伯数字与中文数字章号(含 千 / 两,覆盖千章以上连载),**只认一种编号单位** (章/回/节里出现最多的那个,其余记进 `ignored_heading_units`),只把**短的独立行**当标题 (以章号开头的正文段落记进 `long_heading_lines_skipped`),剔除开头的目录块, 按卷分段校验编号。它**不做编辑判断**——哪章重要、 讲了什么,是后面阶段的事。

`problems` 非空就停下报告,不要带着错表进 S1。常见四种:章号跳号(缺章或抓错标题)、 同卷内重号、正文极少的章(多半抓到了目录残留或卷首页)、无法解析的章号。 另外确认三个计数:`chapter_unit` 与 `ignored_heading_units`——一本用 `第N章` 分章、 用 `第N节` 分小节的书应当看到 `chapter_unit: 章` 且 `节` 被记入忽略计数,反过来说明分章单位 判断错了;`long_heading_lines_skipped` 明显偏大时,多半是这本书的章节标题确实很长, 需要与创作者确认后手写边界。

原文本身没有章节标题时索引会返回空表,此时与创作者确认按什么切分,把边界写进 `_work/_index.next.json`,通过 `verify` 后再按上面的公开生命周期发布——手写的行也要带齐 `sequence` / `line_start` / `line_end`,`verify` 会逐行检查并报出缺字段的行。

改了原文必须重建索引,不能沿用旧 span。`verify` 核对编号、顺序与行号覆盖,所以插行删行会被报出来; 但同行数的原地改写不会——那一步靠改原文的人自己重建,套件不比对字节。

python3 {技能目录}/scripts/novel_index.py verify \
  项目开发/source-analysis/_index.json 输入/{原文文件}

S1 改编价值快评

回答**这本书值不值得花全量拆解的成本**。判据是全书的改编密度——`screen_ready` 单元占多少、 `prose_only` 占多少、制作负担压在哪几段——所以快评横跨整本书,用脚本抽样:

python3 {技能目录}/scripts/novel_index.py sample \
  项目开发/source-analysis/_index.json --count 12

抽样确定、可复现、首尾必取,跑第二次引用的是同一批章。按 [改编价值快评](references/adaptation-triage.md) 写 `triage.md`,覆盖六件事: 故事框架、三类判定比例、开篇替换点、制作负担量级、最大的三处改编风险、分集候选量级。 第一行写覆盖率(脚本返回的 `coverage_ratio`),所有结论限于抽样范围。

**这里停靠问创作者**:给出快评与全量拆解的预计耗时(按章数粗估),问是否继续。 创作者一开始就明确说「一次跑完」时仍写 `triage.md`,但不停下等待——它是 S5 要回填 对照的第一版假设。

停靠时把 `_progress.md` 的状态写成 `paused_after_triage`,断点写「下一步:S2 逐章提取」。

S1–S5 的 Agent 创作产物同样先写到 `source-analysis/_work/`,完成本阶段机械检查后再发布到 上表中的正式路径。项目工具可用时用 `project_tool.py publish` 和稳定 artifact-id;独立运行时 原子替换正式文件。不要用半成品覆盖 `_index.json`、`_progress.md`、`chapters/*.md` 或聚合产物。 `_work/` 是候选工作区,不是权威分析层,也不进入交付包。

**并发子代理写 `_work/`,主线程发布到正式路径**。子代理只落 `_work/chapters/ch-<N>-extract.md`,主线程跑完机械自检后再发布到 `chapters/`。 覆盖率闸门按正式路径 `chapters/` 匹配文件名——发布之前跑,每一章都会进 `unmatched_files`,那不是缺陷,只是跑早了。

`_progress.md` 每个阶段都会重写,而发布要求一个路径只有一个 owner,所以它用一个固定 artifact-id:`source-analysis:progress`,owner 是 `short-drama-novel-analyze`, S0–S5 每次停靠都用同一个 id 重新发布。

S2 逐章功能提取

按 [章节提取](references/chapter-extraction.md) 处理每一章。能并发子代理就分批并发 (每批 5–8 章,等一批落盘再发下一批),不支持就串行——两条路径的写法要求和自检是同一份, 只是速度不同。

每章提取完落到 `chapters/ch-<N>-extract.md`,`<N>` 是索引里的 `sequence`,不是原文章号 (多卷书的原文章号会重复,sequence 不会)。全部落盘后跑覆盖率:

python3 {技能目录}/scripts/novel_index.py coverage \
  项目开发/source-analysis/_index.json 项目开发/source-analysis/chapters

`missing` 非空就补跑缺的章;`unmatched_files` 非空说明有文件名写歪了——它既不算覆盖, 也不会被当成缺章,必须改名而不是重跑。**不要在覆盖率不足时进入 S3**——聚合会照样产出 一份读起来完整的结果,而缺掉的章不会在任何地方留下痕迹。

单章连续失败两次就标记跳过,写进 `_progress.md` 的失败记录,并在后续每一份聚合产物里 注明该章缺失。失败可以接受,失败被藏起来不行。

S3 剧情单元与节奏

从逐章提取聚合,不回头重读原文——原文已经在 S2 被读过一次,再读一次只会得到第二份互相 矛盾的事实。按 [聚合与实体](references/aggregation-and-entities.md) 先识别故事框架 (框架决定按什么切单元),再产出:

  • `story-units.md`:把情节点归成有始有终的单元,每个单元记录进入状态、冲突、代价与出去状态;
  • `rhythm-and-emotion.md`:关键信息如何逐章推进、情绪触动点的铺垫→释放→余波、

跨章伏笔与兑现,以及按观众收益排名的爽点表。

聚合完成后跑同一文件里的三条阈值自检(归属置信、覆盖率、重叠率)与散落情节兜底。 阈值不是评分,是**边界模糊的信号**:重叠率过高说明两个单元其实是一个。

S4 人物与设定

按 [聚合与实体](references/aggregation-and-entities.md) 归并人物(跨章去重、别名归一、 分级),并从提及数据归纳世界规则、力量体系与势力。别名只有专名与有同指证据的绰号能合并, 描述性称谓与头衔**永远不触发合并**。

**人物归并是候选,不是资产**。 这里的人物条目带 `unresolved` 与来源引用, 交给 `$short-drama-develop` 定改编决定、`$short-drama-write` 写进剧本之后, 才由 `$short-drama-assets` 从已接受剧本建立真正的资产身份。绕过这条链直接建资产, 等于让原著的人物表冒充剧本的出现证据。

S5 改编价值与分集候选

这是本技能与通用拆书的分水岭。按 [改编价值](references/adaptation-value.md) 产出:

  • `adaptation-value.md`:哪些单元在竖屏短剧里能直接成立、哪些要换载体、哪些是纯文字快感

(内心戏、叙述性诡计、长铺垫)在画面上无法兑现;制作负担落在哪里。

  • `episode-candidates.jsonl`:按**爽点分布、局部戏剧结果与精确交接**切出的候
Read more
Ships withzenstory-ai-drama-skills-2

开源 AI 短剧/漫剧创作 skill 合集:剧本、角色资产、分镜 storyboard、图片/视频提示词、审查,适配 Claude Code 与 Codex | Open-source AI short drama / micro-drama skills for Claude Code & Codex: script, assets, storyboard, image & video prompts, review. MIT.

Get the whole plugin
Stats
2,596
Stars
561
Forks
Active
Maintenance
Python
Language
MIT
License
4d ago
Last commit
2mo ago
Created
11h ago
Added

Repo: zenstory-ai/drama-skills