lornshrimp/分发-豆瓣
用于将"豆瓣/"目录内指定章节批量上传到豆瓣阅读作者后台并保存为草稿。支持按 README.md 读取账号、密码、豆瓣书籍ID、书名与卷名校验,自动执行登录、章节信息填写、正文粘贴、作者的话添加与存草稿循环。关键词:豆瓣上传、保存草稿、批量传章、豆瓣作者后台、作者的话。
npx skills add https://github.com/lornshrimp/Lorn.NovelWriteSkills --skill 分发-豆瓣
<!-- ===== Layer 1: 永久缓存 ===== -->
用于把你指定的 1 章或多章,上传到豆瓣阅读对应作品下,并全部保存为草稿。
<!-- ===== Layer 3: 场景缓存 ===== -->
本 Skill 执行前,必须按以下规则确定工作目录:
Agents.md,检查其中 主输出平台 声明主输出平台 → 工作目录为 小说正文/主输出平台,或 Agents.md 不存在/未声明 主输出平台 → 工作目录为 豆瓣/后续所有章节文件路径、README.md、分发记录.md 均基于此工作目录。明确说明:
README.md、分发记录.md 均在 小说正文/ 下README.md、分发记录.md 均在 豆瓣/ 下> 路径说明:以下各节中所有 豆瓣/ 形式的路经(如 豆瓣/README.md、豆瓣/分发记录.md)均为工作目录的示例写法。实际目录由上方「工作目录路由规则」确定:本平台是主输出平台时,所有这些路径对应 小说正文/;不是主输出平台时,对应 豆瓣/。
豆瓣/ 目录。豆瓣/README.md 写好账号、密码、豆瓣书籍 ID、书名、卷名信息。> 建议按“章节文件 → 平台配置 → 分发记录 → 书名 / 书籍Id判定 → 缺失模板”顺序完成预检,再进入网页操作。
豆瓣/ 下。# 开头)。# 1.1.3 三分钟,其中 1.1.3 表示 部号.卷号.章号;提取时必须只取最后一段 3 作为“章号”,三分钟 作为“章节标题”。1.1.3、2.4.17 这类三级编号原样写入标题输入框;最终只能写成 第3章 三分钟 一类格式。第X章 标题文本(章号与标题之间必须保留一个空格)。豆瓣/README.md,至少提取以下信息:11997642;按“书籍Id判定规则”选取当前章节对应值)读取 豆瓣/README.md 后,必须检查其第一行一级标题是否等于 # 豆瓣阅读分发配置:
README.md 平台标识与当前 Skill 不符:预期"豆瓣阅读分发配置",实际读取到"{实际读取到的标题}"。请检查是否将其他平台的 README.md 误放到了当前工作目录。豆瓣/分发记录.md:README.md 中的“小说名称(小说书名)”。README.md 中与“小说名称(小说书名)”成对维护的书籍Id。分发记录.md 模板(首次创建直接使用)当 豆瓣/分发记录.md 不存在时,必须按以下模板创建:
# 豆瓣阅读分发记录
> 用途:记录"章节唯一键 -> 豆瓣章节Id"映射,供分发流程判断"新建模式/修改模式"。
## 字段说明
- `章节唯一键`:固定格式 `豆瓣书籍ID|分部名|卷号|章号|章名`(无分部时分部名填 `NA`)
- `豆瓣书籍ID`:对应 `豆瓣/README.md` 中书籍ID
- `章节Id`:豆瓣章节页 URL 中的数字段
- `最近操作`:`新建` 或 `修改`
- `更新时间`:`YYYY-MM-DD HH:mm:ss`
- `备注`:可选
## 记录表
|章节唯一键|豆瓣书籍ID|章节Id|最近操作|更新时间|备注|
|:--|--:|--:|:--|:--|:--|
README.md 模板(首次创建直接使用)当 豆瓣/README.md 不存在时,必须按以下模板创建:
# 豆瓣阅读分发配置
> 用途:存储豆瓣账号、书籍信息与卷名映射。分发流程将读取此文件。
## 账号信息
- 用户名:`your_username`
- 密码:`your_password`
## 书籍信息
### 无分部小说
| 小说名称 | 书籍ID |
|:--|--:|
| 作品名 | 11997642 |
### 有分部小说
| 分部号 | 分部名 | 书籍ID | 卷数 |
|:--|:--|--:|--:|
| 第1部 | 分部一书名 | 11997642 | 3 |
| 第2部 | 分部二书名 | 11997643 | 2 |
## 卷名映射
### 分部一书名
| 卷号 | 卷名 |
|--:|:--|
| 1 | 第一卷 卷标题 |
| 2 | 第二卷 卷标题 |
| 3 | 第三卷 卷标题 |
### 分部二书名
| 卷号 | 卷名 |
|--:|:--|
| 1 | 第一卷 卷标题 |
| 2 | 第二卷 卷标题 |
## 字段说明
- `小说名称` / `分部名`:必须精确匹配 SKILL 中的"书名判定规则"
- `分部号`:必须使用 `第N部` 规范格式(如 `第1部`、`第2部`),并与 `分部名` 一一对应,不得错位或复用
- `书籍ID`:纯数字
- `卷名`:豆瓣平台上该卷的显示名称
## 安全提醒
- 本文件包含明文密码,请妥善保管。
- 本文件应存入 `.gitignore`,不提交到公开仓库。
> 建议按“读取本地输入与模式判定 → 登录后台 → 新建 / 修改分流 → 填标题 / 正文 / 作者的话 → 保存并回写 → 多章循环”的顺序执行。
> 以下自检用于防止"凭印象执行"导致偏离已有 SOP。任何页面异常、工具选择、流程分叉,先查本文对应小节再动手。
scripts/content_parts_server.mjs 是否覆盖当前需求;禁止在已有工具可覆盖的情况下新建临时脚本。豆瓣/README.md。豆瓣/分发记录.md,建立"章节唯一键 -> 章节Id"映射(建议唯一键:豆瓣书籍ID|分部名|卷号|章号|章名;无分部时分部名固定为NA)。https://read.douban.com/submit/agentREADME.md 中的用户名和密码进行登录豆瓣/分发记录.md 中该章节是否已有 章节Id。https://read.douban.com/article_v2/chapter/create?column_id={豆瓣书籍ID}https://read.douban.com/article_v2/chapter/{章节Id}/{章节Id} 部分(两个斜杠之间的纯数字)https://read.douban.com/article_v2/chapter/{章节Id}{豆瓣书籍ID} 必须来自 README.md,且是数字串。column_id 或 URL 路径本身来确认,请在步骤 2 前确认 README.md 中书籍ID无误。豆瓣要求在单一输入框中输入"章节编号 + 空格 + 章节标题"。
1)。# 标题行),不得使用文件名。第X章 标题文本 组合填入标题输入框:第1章 天降奇缘章节Id(若为新建模式,这时 URL 应为 https://read.douban.com/article_v2/chapter/{章节Id}/)。豆瓣/分发记录.md:章节Id(如变化)和更新时间。章节唯一键内部包含 | 时,写入表格必须转义为 \|,否则会破坏表格列数并导致记录不可解析。> 章节唯一键生成规则(强制):
> - 使用字段顺序:豆瓣书籍ID|分部名|卷号|章号|章名
> - 其中:
> - 豆瓣书籍ID 来自 README.md
> - 分部名 使用当前分部书名;无分部填 NA
> - 卷号、章号 必须是阿拉伯数字
> - 该规则用于彻底避免多部小说下"同卷同章号"冲突。
分发记录.md 决定新建/修改模式,不得沿用上一章模式。> 目标:在不放松现有强制规则的前提下,减少重复点击、重复粘贴与重复判定成本。
>300 先压缩);分发记录.md)。豆瓣/.cache/content_parts/no_part/v{卷号}/*.txt、豆瓣/.cache/content_parts/p{分部号}/v{卷号}/*.txt + 映射表),浏览器阶段只做“取数据→填写→保存”。1) 打开目标地址(新建 create?column_id= 或修改 chapter/{id});
2) 填标题(第X章 标题);
3) 填正文;
4) 填作者的话;
5) 保存;
6) 提取章节Id;
7) 回写记录。
5–10 章为一个小批次执行:分发记录.md;> D / E / F 三节统一执行口径:优先保证批次连续性与可回滚性;安全验证类提示一律按阻断处理;数据通道异常必须可降级。
scripts/content_parts_server.mjs(通用 content parts 服务):/parts/v/{卷号}/{章号}/parts/p/{分部号}/v/{卷号}/{章号}/parts/{章号} 仅限单批次临时使用;分发记录.md 的实时查询。content_parts_server)时必须提供降级路径:服务不可用时自动回退到本地文件读取,不中断批次执行。计划章数 = 成功章数 + 失败章数,且成功章均完成 章节Id 回写。> 下面这些是执行时不能放松的护栏;若与页面临时表现冲突,以这里的规则和下方“实操经验沉淀”为准复核。
豆瓣/分发记录.md。README.md 中的豆瓣书籍 ID 正确无误(豆瓣编辑界面无法在页面校验书籍信息)。create?column_id={书籍ID} 与 chapter/{章节Id} 两种地址必须按记录自动分流,禁止混用。# 标题行),不得以文件名充当标题。第X章 标题文本(章号与标题之间必须保留一个空格),不得遗漏空格。章节Id 回写到 豆瓣/分发记录.md。分发记录.md 写入失败:本章虽然可能已保存,但流程状态必须标记为"部分失败(记录未落盘)",并立即提示人工补录,禁止静默成功。> 建议按“编辑页识别 → 页面反馈 → 长批量策略 → 自动化辅助件”的顺序阅读:前两类偏单章操作稳定性,后两类偏长批量连续分发。
textarea(位于 h1.title 下),placeholder 为“标题”。div.public-DraftStyleDefault-block.public-DraftStyleDefault-ltr(Draft 编辑区块,位于 DraftEditor-root 下)。textarea(标题),再写 Draft div(正文);禁止反向填写。如遇页面结构调整,优先人工核查输入框顺序和 placeholder,必要时更新自动化定位逻辑。
X。X 关闭,再继续流程。https://read.douban.com/article_v2/chapter/create?column_id={书籍ID} 后,页面正文区域没有出现编辑器,而是显示“你发得太快,读者看不过来啦,请明天再继续”,应判定为平台当日发稿限流。textarea[placeholder="标题"] 不会渲染出来。豆瓣/分发记录.md;分发记录.md 中未写入 章节Id 的第一章继续,而不是从头重跑整批。>300 的章节集中压缩,再进入浏览器批量填写。第3–40章 预检中,超限章为:第12章、第24章、第26章、第28章。豆瓣/.cache/content_parts/no_part/v{卷号}/*.txt 或 豆瓣/.cache/content_parts/p{分部号}/v{卷号}/*.txt 作为自动化输入缓存,可优先批量检查 *_author.txt;若未使用缓存,则仍以原章节文件中的“作者的话”为准。分发记录.md豆瓣/分发记录.md。5–10 章,就立刻把这一小批的 章节唯一键 -> 章节Id 映射写回记录表。章节Id;分发记录.md 中尚未写入 章节Id 的第一章继续;第3–7章、再回写 第8–21章,才在第22章触发限流后仍能保持本地状态完整。scripts/content_parts_server.mjs(通用 content parts 服务)的定位与用法scripts/content_parts_server.mjs 是一个自动化辅助脚本,用于把平台目录下 .cache/content_parts/ 中按章拆分好的标题、正文、作者的话,暴露为本地 JSON 接口,供浏览器自动化流程读取。豆瓣/.cache/content_parts/ 中的内容与当前待上传章节保持同步。豆瓣/.cache/content_parts/ 还是旧缓存、尚未反映最新章节改动;豆瓣/ 下目标章节文件一致。README.md、分发记录.md 与目标章节文件的正式规则执行;豆瓣/.cache/content_parts/,否则应直接读取章节文件,不要盲信缓存。/health/parts/v/{卷号}/{章号}/parts/p/{分部号}/v/{卷号}/{章号}/parts/{章号}chapterNo、title、body、author8765;CONTENT_PARTS_PORT 切换到其他端口。.cache/content_parts 在脚本中已写死,默认读取 小说正文/.cache/content_parts。DISTRIBUTION_PLATFORM_DIR=豆瓣(脚本会自动拼接到 豆瓣/.cache/content_parts)。DISTRIBUTION_PLATFORM_DIR 切换平台目录(如 番茄小说),脚本会自动拼接到 {平台目录}/.cache/content_parts。scripts/ 与数据缓存目录的边界scripts/ 目录只用于存放可复用脚本本体(如 content_parts_server.mjs),不建议放置每轮分发生成的临时章节数据。豆瓣/ 目录下的专用临时子目录(如 豆瓣/.cache/content_parts/)。.cache/content_parts 作为缓存子路径;仅在跨平台复用时通过 DISTRIBUTION_PLATFORM_DIR 切换平台目录。/parts/{章号}。豆瓣/分发记录.md 首次不存在时必须先创建模板再执行,否则新建/修改分流失效。章节唯一键写入 Markdown 表格时必须使用转义竖线(\|);不转义会触发表格列错位(典型报错:Expected 6 columns, Actual 10)。https://read.douban.com/article_v2/chapter/732782163/,验证了"create -> 重定向 -> 提取章节Id -> 回写记录"链路可用。豆瓣/README.md 并提取必需字段。豆瓣/分发记录.md 并正确选择新建/修改 URL。豆瓣/分发记录.md(含章节与章节Id映射)。Take lornshrimp/分发-豆瓣 from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.