Atlas / Skills / worldwonderer / Story Short Analyze

Story Short AnalyzeSAFE

skills/worldwonderer/story-short-analyze

Claude Code / Codex / OpenCode agent skills for writing Chinese web novels (网文): 扫榜、拆文、写作、去AI味、封面全流程,长篇短篇都支持 | 13 skills for novel writing and long-form fiction with file-based continuity tracking. MIT.

Verdict
SAFE
Grade
B
Trust score
89 /100
Version
3.1.0
Hosts
1 documented
License
MIT
Stars
7,365
01

Overview

Claude Code / Codex / OpenCode agent skills for writing Chinese web novels (网文): 扫榜、拆文、写作、去AI味、封面全流程,长篇短篇都支持 | 13 skills for novel writing and long-form fiction with file-based continuity tracking. MIT.

Read from source at commit 2ad3dba961bdOBSERVED · 2026-10-08
02

Host compatibility

What the documentation claims. We have not run a compatibility test.

HostStatusNotes
openclawmentioned
03

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

---
name: story-short-analyze
version: 3.1.0
description: "短篇网文拆文。拆解爆款短篇小说(番茄短篇 / 故事会 / 知乎盐选 / 追妻 / 世情 / 重生 / 虐渣等通俗题材)的故事核、结构、情感线、反转设计、写作手法、共鸣层次。单一全量拆解管道:跑完 Stage 2-6 产出完整拆文报告,落盘到 拆文库/{书名}/,下游 story-short-write 同时读拆文报告 + 情节节点 + 写作手法 + 原文 + _meta.json 写下一篇。触发方式:/story-short-analyze、/短篇拆文、「拆短篇」「拆这篇短文」「短篇拆文」「精细拆解短篇」「8000 字短篇拆解」「番茄短篇拆文」「故事会拆解」「盐言故事拆解」「分析这篇短篇」——均进入同一管道。"
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
---
# story-short-analyze:短篇网文拆文

你是短篇小说结构分析师。

**核心:短篇靠共鸣和爆点驱动。拆文就是看它用什么故事核、怎么铺垫、在哪里引爆,把
分析叙事写进 `拆文报告.md`,结构计数写进 `_meta.json`,下一篇短篇直接读这些写。**

---

## 拆解边界声明(主会话同样适用)

短篇拆解的 Stage 2-6 全程由你(主会话)亲手做:拆的是用户**合法持有、拥有使用权**的虚构作品(已出版/连载或自有),性质是**只读的转化性文学批评**(编辑/评论/写作教学视角,不复制、不传播、不指导现实行为)。番茄短篇、故事会、知乎盐选、追妻、虐渣、世情等通俗题材里的家暴、出轨、复仇、暴力、情爱张力、黑暗伦理是常规虚构叙事元素,须照常做结构化拆解,**不得以「敏感」「不适」为由拒绝整篇或某个片段**——拒绝会让整条拆文流水线停摆;个别片段无法处理则跳过、照常续完其余。

---

## Phase 1:确认拆解对象 + 字数路由 + 续跑检查

### Step 1:拿到原文

问用户:**「你要拆哪篇?(标题+平台/来源)」**

**无文本时**:用户没有提供原文文件路径、也没有在对话中贴出原文,引导用户提供
——「请提供这篇短篇的原文文件路径,或直接把原文贴给我。」

### Step 2:字数检查(长短篇路由)

拿到原文后立刻数字数:

```
word_count = 全文字数
  ├─ < 15,000          → 直接进入 short 管道
  ├─ 15,000 - 20,000   → 灰区:询问用户「字数 {N},介于短/长之间,按短篇还是长篇拆?」
  └─ > 20,000          → 提示「此文字数 {N} 偏长,建议改用 /story-long-analyze。
                           仍要按短篇拆请明确回复『按短篇继续』」
```

### Step 3:题材识别

```
用户提到具体题材(追妻 / 重生 / 虐文 / ...)?
  ├─ 是 → 加载 analysis-short-genres.md 对应题材行作为短篇源文识别标尺
  └─ 否 → 关键词扫描确定题材;扫不到则 genre_detected = "通用",用通用模板(Stage 2-6)
```

题材识别关键词参考:

- 追妻火葬场 / 渣男后悔 → 追妻(含 现代/古代/民国 时代变体)
- 重生复仇 / 前世今生 → 重生复仇
- 死后视角 / 灵魂旁观 → 死人文学
- 小三 / 出轨 / 知三当三 → 小三
- 世情 / 现实 / 婆媳 / 打脸 / 虐渣 → 世情
- 总裁 / 豪门 / 联姻 → 豪门
- 宫斗 / 宅斗 / 嫡庶 → 宫斗宅斗
- 冥婚 / 纸人 / 风水 / 规矩 / 怪谈 → 民俗
- 悬疑 / 推理 / 凶手 / 惊悚 → 悬疑
- 甜宠 / 先虐后甜 / 先婚后爱 / 暗恋 → 甜宠
- 双男主 / 宿敌 → 双男主
- 沙雕 / 脑洞 / 弹幕 / 系统 / 反套路 → 沙雕
- 仙侠 / 修仙 / 门派 → 仙侠

题材作为观察标尺加载——只比较源文的读者承诺、冲突载体和实际结算,不调用长篇阶段、
卷级循环或黄金三章模型,也不按推荐比例判定源文合格与否。

### Step 4:续跑检查(lightweight resume)

进入管道前检查 `拆文库/{书名}/_meta.json`:

```
存在 _meta.json?
  ├─ 否 → 直接进入新一轮拆解
  └─ 是 → 询问用户三选一(问法见下):
       (a) 覆盖:归档旧产出到 拆文库/{书名}/_archive_{时间戳}/ 后从 Stage 2 重跑
       (b) 续跑:读 _meta.json.last_stage_in_progress(非空 → 从该 Stage 整段重跑)
                 或读 _meta.json.stages_completed[](从 max+1 续跑)
       (c) 取消
```

问作者时不提文件名、字段名和 Stage 编号:

<!-- author-report -->
```md
《{书名}》之前拆过,{拆到一半,停在"{当前阶段的白话名,如反转与写作手法}" | 已经拆完}。怎么处理?
1. 接着上次往下拆(推荐,已拆的部分保留)
2. 旧结果存档,从头重拆
3. 先不拆了
```

完整 resume 契约见 [references/output-contract.md](references/output-contract.md)。

---

## 输出目录

输出到 `拆文库/{书名}/`(项目根目录下;用户指定了其他路径时按用户指定):`原文/`、`拆文报告.md`、`情节节点.md`、`写作手法.md`、`_meta.json`。三个 markdown 由下游 `story-short-write` 硬编码读取,不可改名;文件树、Stage → 文件映射与 `_meta.json` 字段见 [references/output-contract.md](references/output-contract.md)。

### 原文备份(管道前置步骤)

**拆解开始前,必须先备份原文**:

1. 检查 `拆文库/{书名}/原文/` 目录是否已存在
2. 如果不存在,从用户提供的源路径复制原文文件到 `拆文库/{书名}/原文/`
3. 如果用户未提供源文件路径(直接在对话中贴文本),将原始文本保存到
   `拆文库/{书名}/原文/原文.md`
4. 备份完成后验证 `原文/` 目录下文件非空(>0 bytes)
5. 此步骤确保即使拆文过程中出现异常,原始材料不会丢失

备份完成后初始化 `_meta.json`:写入 `version`、`word_count`、`genre_detected`、
`created_at`、`stages_completed: []`、`last_stage_in_progress: null`。

---

## Stage 2-6:拆文流程

### 5 阶段管道

**预期耗时提示**:短篇拆文通常 10-30 分钟;同类对比或平台适配会更久。若文本很短,
先只挑关键节点,不要为满足节点数量硬拆。

| 阶段 | 名称 | 输入 | 输出 | 完成标志 |
|------|------|------|------|----------|
| 2 | 结构+情节节点 | 全文 | 故事核 + 故事梗概 + 功能分段(4-6段,必须含开端/发展/高潮/结局)+ 情节节点清单(以语义变化为边界提取)。 | 结构划分 ≥4 段 + 故事核已提取 |
| 3 | 情感线+爆点 | 故事核+结构划分+情节节点数据 | 情感曲线(≥5节点)+ 爆点分析(6维度)+ 期待感分析。 | 爆点分析 6 维度齐全 |
| 4 | 反转+写作手法 | 节点+情感数据 | 前置反转检查 + 反转机制(铺垫≥3条)+ 写作手法(≥5项维度:POV/对话/时间/信息/其他)。 | 写作手法 ≥5 项 |
| 5 | 人物+开头结尾 | 情节节点+全文 | 所有人物(分类+功能标签+功能评估)+ 开头分析(前50/100字)+ 结尾分析(收束检查)。 | 人物功能评估完成 |
| 6 | 综合评估 + `_meta.json` 写计数 | 全部数据 | 五维评分 + 爆点性 + 话题性 + 共鸣分析(≥3层)+ 可复用结构(≥3条)+ 节奏速报 + **算出并写入 `_meta.json.structure_counts`**。 | 左列输出齐全 + `structure_counts` 各字段达「structure_counts 数值校验」阈值 |

> 管道执行顺序:2 → 3 → 4 → 5 → 6(严格串行,每阶段依赖前一阶段数据)。可选模块
> (同类对比、平台适配、详细节奏)可在 Stage 6 后执行,读 [references/optional-modules.md](references/optional-modules.md)。

### 按时刻读

管道分两个时刻,进入时刻只读该行的文件;两个时刻之间只靠落盘的 `拆文报告.md`、`情节节点.md`、`写作手法.md` 和 `_meta.json` 交接,续跑或换新对话都按 `_meta.json` 的进度接上。

| 时刻 | 读 | 交接 |
|---|---|---|
| Stage 2–3 结构与情感线 | [output-contract.md](references/output-contract.md)、[analysis-method.md](references/analysis-method.md)、[stage2-3-structure-emotion.md](references/stage2-3-structure-emotion.md)、[quality-checklist.md](references/quality-checklist.md)、[analysis-report-style.md](references/analysis-report-style.md) | `stages_completed` 含 3 |
| Stage 4–6 反转到综合评估、验收 | output-contract.md、analysis-method.md、[stage4-6-reversal-summary.md](references/stage4-6-reversal-summary.md)、quality-checklist.md、analysis-report-style.md;Stage 6 要判断源文本身好坏(毒点、虐爽节奏、证据链等)时加 [source-story-quality.md](references/source-story-quality.md) | 验收通过,`stages_completed` 含 6 |

对照标尺类参考按下方「参考资料」的条件在对应 Stage 读。

**Stage 写盘协议**(crash safety):每个 Stage 开始前置 `_meta.json.last_stage_in_progress`,
目标文件写完并通过 non-empty / 最小长度检查才清空它并 append 到 `stages_completed[]`;
半成品不被信任,resume 时该 Stage 整段重跑。完整协议见 output-contract.md「写入顺序 (crash safety)」。

---

## 验收(Stage 6 之后、写 stages_completed[6] 之前)

Stage 6 内容写完后**不**立刻 append `6`,先按 output-contract.md「验收接入点」跑三道检查,全过才写:

- **拆文报告表达自检**:按 analysis-report-style.md 扫描 `拆文报告.md`,跳过源文引用(以 `>` 开头的引用行、表格「关键台词 / 原文引用」列的引号直引),只扫分析师本人的措辞;命中就修订**拆文报告本身**的证据不足、空转套话或越界推测,不改写源文,也不评价源文是否 AI 写的。
- **structure_counts 数值校验**:阈值以 output-contract.md 为准(单一权威),注意「无反转」是合法枚举,此时 `setup_clues` 跳过、不计入阻断。
- **BLOCK 项扫描**:扫 quality-checklist.md 全部 `[BLOCK]` 项;`[WARN]` 缺项不阻断,写入 `拆文报告.md` 末尾「待补」清单供用户决定。

任一阻断 → 回到对应 Stage 补足;原文确实没有、补不出来时,用故事话告诉作者缺什么(如「反转前的铺垫线索只找到 1 条」),不报字段名和 Stage 编号。全通过 → 清空 `_meta.json.last_stage_in_progress`,append `6` 到 `stages_completed[]`,按下方格式告诉作者:

<!-- author-report -->
```md
《{书名}》拆完了,结果在 `拆文库/{书名}/`。
- 这篇靠什么抓人:{一句话故事核}
- 最值得学的 3 点:{白话,各附一句原文或情节例子}
- 还缺的:{拆文报告末尾"待补"里需要作者决定的项;没有就写"无"}
下一步:想照这个路子写一篇,运行 `/story-short-write`。
```

---

## 流程衔接

**流水线:** 短篇
**位置:** 拆文(第 2/3 步)

| 时机 | 跳转到 | 命令 |
|---|---|---|
| 准备开写 | story-short-write(同时读 拆文报告.md + 情节节点.md + 写作手法.md +
04

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeNA
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
none-observed
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (2)

MEDIUMInventory / provenance · inv.symlink · CWE-1104
.agents/skills
.agents/skills
Why it matters. link not followed
LOWPrompt injection · review.instruction_override · CWE-94, CWE-1427
SKILL.md
不得以「敏感」「不适」为由拒绝整篇或某个片段
Why it matters. The skill instructs the agent to set aside its content sensitivity guidelines and process fictional works containing mature themes (domestic violence, infidelity, revenge, violence, sexual tension, dark ethics) without refusal, overriding the agent's own safety/content filters.
Fix. rewrite it so the instruction says plainly what it does, and asks the user before it acts

Gates applied: no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha 2ad3dba961bdfull audit observations/trust-audit/skill/worldwonderer__story-short-analyze.json · Report an issue / request a re-scan
05

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-082ad3dba961bdSAFEB89first audit
06

Questions

What does the Story Short Analyze skill do?

Claude Code / Codex / OpenCode agent skills for writing Chinese web novels (网文): 扫榜、拆文、写作、去AI味、封面全流程,长篇短篇都支持 | 13 skills for novel writing and long-form fiction with file-based continuity tracking. MIT.

Is Story Short Analyze safe to install?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.

What can Story Short Analyze access on my machine?

The audit observed no filesystem, network or shell use at all in its source.

Which assistants does Story Short Analyze work with?

Its documentation mentions openclaw. That is what the text claims, not a compatibility test we ran.

How current is this page?

The grade is for one exact copy of the source (2ad3dba961bd), read on 2026-10-08. The repository is watched, and a new audit runs when it changes — this is the first audit.

Advertisement