# Novel Publisher

> 小说发布子技能。将穿越小说章节自动发布到 time-weaver 在线平台。支持首次全量发布、增量发布、自动追踪发布状态。

- Skill: `harry720320/novel-publisher` (Agent Skill)
- Install (CLI): `npx skillmds@latest add harry720320/novel-publisher`
- Raw SKILL.md: https://api.skillmd.com/api/skills/harry720320/novel-publisher/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: harry720320 (https://skillmd.com/u/harry720320)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/harry720320/novel-publisher

---


# Novel Publisher - 小说发布器

自动将 Time Weaver 创作的穿越小说章节发布到在线平台。

## 网站地址

**https://time-weaver-782300018128.us-west1.run.app/**

## 依赖

- Node.js
- `scripts/cli.js` 命令行工具

## 配置文件

- `~/.time-weaver-config` - API Key 存储（由 cli.js 管理）
- `.learnings/PUBLISH_STATUS.md` - 章节发布状态追踪

---

## 首次使用流程

### 步骤1：引导注册
首次调用时，向用户显示以下信息：

> 📚 **首次使用小说发布功能**
> 
> 请先访问网站注册账号：
> **https://time-weaver-782300018128.us-west1.run.app/**
> 
> 注册步骤：
> 1. 点击注册，创建账号
> 2. 进入个人资料页面
> 3. 生成 API Key
> 4. 将 API Key 发送给我

### 步骤2：保存 API Key
用户发送 API Key 后，执行：
```bash
echo '{"apiKey": "用户的API_KEY"}' > ~/.time-weaver-config
```

然后回复：
> ✅ API Key 已保存！现在可以开始发布小说了。

---

## 发布状态管理

### 状态文件：`.learnings/PUBLISH_STATUS.md`

格式：
```markdown
# 发布状态记录

## 基本信息
- 书名: [小说名称]
- 首次发布时间: [日期]
- 最后更新时间: [日期]

## 章节发布状态

| 章节序号 | 章节标题 | 文件路径 | 发布状态 | 发布时间 | 线上链接 |
|---------|---------|---------|---------|---------|---------|
| 1 | 第一章：穿越 | ./chapters/chapter_01.md | ✅ 已发布 | 2026-03-30 | [链接] |
| 2 | 第二章：初遇 | ./chapters/chapter_02.md | ✅ 已发布 | 2026-03-30 | [链接] |
| 3 | 第三章：谋定 | ./chapters/chapter_03.md | ⏳ 待发布 | - | - |

## 发布统计
- 总章节数: 3
- 已发布: 2
- 待发布: 1
```

---

## 发布流程

### 场景1：首次发布（全量发布）

当 `.learnings/PUBLISH_STATUS.md` 不存在时：

1. **检查登录状态**
   - 检查 `~/.time-weaver-config` 是否存在
   - 不存在 → 执行【首次使用流程】

2. **扫描章节文件**
   - 查找 `./chapters/` 目录下所有章节文件
   - 支持的命名格式：
     - `chapter_01.md`, `chapter_02.md`...
     - `第1章.md`, `第2章.md`...
     - `chapter-1.md`, `chapter-2.md`...
   - 按序号排序

3. **询问书名**
   > 请输入要发布的小说书名：

4. **逐章发布**
   - 对每一章执行：
   ```bash
   node scripts/cli.js publish "书名" "章节标题" "章节文件路径"
   ```
   - 记录发布结果

5. **创建状态文件**
   - 生成 `.learnings/PUBLISH_STATUS.md`
   - 记录所有章节发布状态

6. **汇报结果**
   > ✅ 首次发布完成！
   > - 共发布 X 章
   > - 成功: X 章
   > - 失败: X 章
   > - 访问 https://time-weaver-782300018128.us-west1.run.app/ 查看

### 场景2：增量发布

当 `.learnings/PUBLISH_STATUS.md` 已存在时：

1. **读取状态文件**
   - 解析已发布的章节列表
   - 识别待发布章节

2. **扫描新章节**
   - 查找 `./chapters/` 目录
   - 对比状态文件，找出新增章节

3. **按序发布新章节**
   - 只发布标记为「待发布」的章节
   - 保持章节顺序

4. **更新状态文件**
   - 更新已发布章节的状态
   - 更新最后更新时间

5. **汇报结果**
   > ✅ 增量发布完成！
   > - 本次发布: X 章
   > - 累计发布: X/X 章

---

## 章节文件格式

每个章节文件应包含：

```markdown
# 第一章：章节标题

正文内容...
正文内容...
```

标题格式要求：
- 第一行必须是 `# 第X章：标题` 或 `# 章节标题`
- cli.js 会提取第一行作为章节标题

---

## 自动发布触发

### 触发条件
每次 Time Weaver 完成一章写作后，**自动调用** novel-publisher：

1. 新章节保存到 `./chapters/chapter_XX.md`
2. 触发发布流程
3. 执行增量发布（只发布新章节）

### 自动发布流程
```
新章节完成
    ↓
保存章节文件
    ↓
调用 novel-publisher
    ↓
检查登录状态
    ↓
扫描新章节
    ↓
发布未发布章节
    ↓
更新状态文件
    ↓
通知用户发布结果
```

---

## 命令参考

### 手动触发发布
```
发布我的小说
```

### 重新发布特定章节（覆盖模式）
```
重新发布第3章
```

### 查看发布状态
```
查看小说发布状态
```

---

## 错误处理

| 错误情况 | 处理方式 |
|---------|---------|
| API Key 无效 | 提示重新登录，引导获取新 API Key |
| 网络错误 | 重试3次，失败后记录待重试状态 |
| 章节文件不存在 | 跳过并记录错误 |
| 发布服务器错误 | 记录错误，稍后重试 |

---

## 与 Time Weaver 主技能的集成

主技能 `SKILL.md` 中需要添加：

1. **写作完成回调**
   - 每章完成后保存文件
   - 自动调用 `novel-publisher` 进行发布

2. **发布状态查询命令**
   - 用户可随时查询发布进度

3. **发布相关功能**
   - 发布小说
   - 查看发布状态
   - 重新登录/更换 API Key

---

*Novel Publisher - 将穿越小说发布到线上*

