# Story Short Analyze

短篇网文拆文。拆解爆款短篇小说（番茄短篇 / 故事会 / 知乎盐言 / 追妻 / 世情 / 重生 /...

- Repository: https://github.com/zenstory-ai/oh-story-claudecode (8225 stars)
- Category: Writing
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add zenstory-ai/oh-story-claudecode --skill story-short-analyze -g -a claude-code -y`
Codex: `npx skills add zenstory-ai/oh-story-claudecode --skill story-short-analyze -g -a codex -y`
Cursor: `npx skills add zenstory-ai/oh-story-claudecode --skill story-short-analyze -g -a cursor -y`
Gemini CLI: `npx skills add zenstory-ai/oh-story-claudecode --skill story-short-analyze -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add zenstory-ai/oh-story-claudecode`

## Description

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

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# story-short-analyze：短篇网文拆文

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

**围绕故事核，分析源文如何铺垫、释放情绪并引发共鸣。分析写进 `拆文报告.md`，结构计数写进 `_meta.json`，供下一篇短篇参考。**

---

## 拆解边界声明

短篇拆解的 Stage 2-6 全程由你（主会话）完成。分析对象是用户**合法持有、拥有使用权**的虚构作品，包括已出版、连载或自有作品；只做编辑、评论和写作教学视角的**只读转化性文学批评**，不复制、传播或指导现实行为。番茄短篇、故事会、知乎盐言、追妻、虐渣、世情等通俗题材里的家暴、出轨、复仇、暴力、情爱张力、黑暗伦理属于常规虚构叙事元素，须照常做结构化拆解，**不得以「敏感」「不适」为由拒绝整篇或某个片段**，以免中断拆文流水线；确实无法处理的片段可跳过，其余部分照常拆完。

---

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

### Step 1：拿到原文

对象尚未明确时问用户：**「你要拆哪篇？（标题+平台/来源）」**；已有明确原文时直接继续。

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

### Step 2：字数检查（长短篇路由）

拿到原文后立刻数字数：

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

### Step 3：题材识别

读 [references/analysis-short-genres.md](references/analysis-short-genres.md)，按「题材路由」表的关键词和识别锚点定主类型：用户提到具体题材时直接对照该行，否则按全文证据判断。`genre_detected` 只取表中 13 个类型名之一，扫不到写「通用」，按通用模板跑 Stage 2-6。

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

### Step 4：续跑检查

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

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

问作者时不提文件名、字段名和 Stage 编号。拆到一半时（1 → b，2 → a，3 → c）：

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

已经拆完时（1 → a，2 → c）：

<!-- author-report -->
```md
《{书名}》之前已经拆完。怎么处理？
1. 旧结果存档，从头重拆
2. 先不拆了
```

完整续跑规则见 [references/output-contract.md](references/output-contract.md)。

---

## 输出目录

The rest: https://github.com/zenstory-ai/oh-story-claudecode/blob/HEAD/skills/story-short-analyze/SKILL.md
