Skip to content

Repository files navigation

duanju — 短剧向女频短故事创作命令行工具

一句话介绍:把一句话题材,变成一本可直接投稿的短剧向女频短故事。

它在你的电脑上运行,调用你自己配置的 AI 模型(OpenAI / Claude / Gemini / DeepSeek / Kimi 等均可),按照内置的短剧创作方法论,走完「选题包装 → 书名锻造 → 逐章正文 → 投稿导出」全流程:

  • 覆盖四大主类:总裁、古言、女频现实情感、年代/穿越
  • 目标篇幅:总计 1.5 万 - 3 万字,单章 2000-4000 字,章纲 10-20 章
  • 产物全部是普通文本文件(markdown / txt),随时可以自己动手改
  • 每一步的成果都保存在项目文件夹里,中途断了、关机了,重新运行同一条命令就能接着写

适合番茄小说、红果短剧等平台的短篇投稿创作。


一、安装

1. 先安装 Node.js(只需装一次)

duanju 依赖 Node.js 20 或更高版本 运行。Node.js 是一个免费的运行环境,装完就不用管它了。

  1. 打开官网 https://nodejs.org/,下载 LTS(长期支持版) 安装包
  2. 双击安装,一路点「下一步」即可
  3. 验证:打开终端(Windows 按 Win + R 输入 cmd 回车;macOS 打开「终端」App),输入:
node -v

显示 v20.x.x 或更高就没问题。

2. 安装 duanju

在终端里输入:

npm i -g duanju-cli

装好后输入 duanju(不带任何参数)回车,能看到中文命令总览就说明安装成功。

也可以不安装、临时试用(每条命令前加 npx,首次会自动下载):

npx duanju-cli config

二、快速开始:写出你的第一本书

以下命令都在终端里输入,一行一条,回车执行。

第 1 步:配置 AI 模型(首次使用必做,只需一次)

duanju config

按提示选择厂商 → 粘贴 API Key → 选择模型。保存前会自动发一条测试消息验证能不能连通,验证不通过不会保存。

API Key 从哪来?在你使用的模型平台(如 DeepSeek、月之暗面、OpenAI 等)的官网注册后,在「API Keys」页面创建。Key 相当于付费账户的钥匙,不要发给别人

第 2 步:创建作品项目

duanju new "替嫁三年,残疾大佬站起来了"

会在当前位置创建一个项目文件夹,然后进入它:

cd 替嫁三年残疾大佬站

(文件夹名取自题材前 10 个字,以 new 命令实际输出的为准。)

第 3 步:生成六包(选题包装)

duanju package

依次生成 6 个「包」+ 1 次风险自检,共 7 次 AI 调用:

正在生成 01-题材归类.md…
01-题材归类.md 已生成。
「题材归类」已写入 01-题材归类.md,请审阅后选择:
  ● 确认,继续下一步
  ○ 重写本包
  ○ 我已手动修改文件,继续

每个包生成后都会停下来等你审阅:可以直接确认、让 AI 重写、也可以自己打开文件改完再继续。全部完成后显示:

六包 + 风险自检已完成。
下一步:duanju title   # 生成 20 个书名候选并选定

第 4 步:选书名

duanju title

生成两个梯队各 10 个候选(第一梯队每个都附带具体理由,写在 titles.md 里),从列表中选一个,或手动输入自己起的书名:

已选定书名:《替嫁新娘的马甲藏不住了》,并回填 04-标题简介包.md 与 duanju.json。

第 5 步:逐章写正文

duanju write

每运行一次写一章(正文会实时滚动显示),写完自动更新角色状态快照:

正在生成第 1 章正文(目标约 3000 字,流式输出)…
(……正文实时输出……)
第 1 章已写入 chapters/001.md(约 2980 字)。
正在更新角色状态快照…
进度:已写 1/12 章。
下一步:duanju write   # 继续写下一章

重复运行 duanju write 直到写完全部章节。忘了写到哪了就运行 duanju status 看进度。

第 6 步:导出成书

duanju export

在项目的 exports/ 文件夹里生成一个完整的 txt 文件(书名 + 简介 + 全部章节),直接可以拿去投稿:

整本已导出:exports/替嫁新娘的马甲藏不住了.txt(共 12 章)

三、模型配置详解

支持的四类厂商

选项 适用 说明
OpenAI GPT 系列 官方 API
Anthropic (Claude) Claude 系列 官方 API
Google (Gemini) Gemini 系列 官方 API
OpenAI 兼容接口 DeepSeek、Kimi、各类中转站/代理站 需要额外填一个 baseURL

OpenAI 兼容接口怎么填(国内用户最常用)

选「OpenAI 兼容接口」后会多问一个 baseURL(接口地址),常见填法:

平台 baseURL 模型名示例
DeepSeek https://api.deepseek.com/v1 deepseek-chat
Kimi(月之暗面) https://api.moonshot.cn/v1 moonshot-v1-32k
各类中转站 按站点说明填,通常以 /v1 结尾 按站点提供的模型名填

配置存在哪、优先级如何

配置保存在你电脑的用户目录下:~/.duanju/config.json(Windows 即 C:\Users\你的用户名\.duanju\config.json)。

生效优先级:项目 duanju.json 的 modelOverride > 全局配置 > 环境变量

不想把 Key 存在配置文件里的话,也可以设置环境变量(duanju 会自动读取):

厂商 环境变量名
OpenAI / OpenAI 兼容接口 OPENAI_API_KEY
Anthropic ANTHROPIC_API_KEY
Google GOOGLE_GENERATIVE_AI_API_KEY

Key 安全说明

API Key 只保存在你电脑的 ~/.duanju/config.json,绝不会写进作品项目文件夹。 所以把项目文件夹发给朋友、传网盘、开合集都不会泄露你的 Key。项目里的 duanju.json 最多记录用哪个厂商和模型(modelOverride),不含 Key。


四、命令参考(共 9 个)

所有命令都可以加 --help 查看用法,如 duanju write --help

duanju config

交互式配置模型厂商 / API Key / 模型。保存前发送测试消息验证连通,验证失败不保存。

duanju config

duanju new

创建新的故事项目文件夹(含 duanju.jsonchapters/state/exports/)。

duanju new "<题材一句话>"
参数 说明
<题材> 必填。一句话说清你想写什么,如「总裁的替嫁新娘」

duanju package

生成六包(题材归类 → 题材包 → 人设包 → 标题简介包 → 开篇包 → 章纲包)+ 风险自检。每包生成后停下来等你确认/重写/手改。已生成的包自动跳过(续传)。

duanju package [目录] [--force] [--yes]
参数 说明
[目录] 可选。项目文件夹路径,默认当前目录
--force 忽略已有产物,七步全部重新生成
--yes 跳过逐包确认,自动接受生成结果

duanju title

生成 20 个书名候选(两梯队各 10 个,第一梯队附具体维度理由),选定后自动回填 04-标题简介包.mdduanju.json。需要先完成 duanju package

duanju title [目录] [--force] [--yes]
参数 说明
[目录] 可选。项目文件夹路径,默认当前目录
--force 忽略已有 titles.md,重新生成候选
--yes 跳过选择,自动选定第一梯队第 1 个

duanju write

逐章生成正文(在项目目录内运行)。不带章号 = 写下一未完成章;带章号 = 重写指定章(原文自动备份为 .bak-时间戳)。每章默认目标约 3000 字,偏差超过 ±15% 会警告并询问。

duanju write [章号] [--yes]
参数 说明
[章号] 可选。要重写的章号,如 duanju write 3 重写第 3 章
--yes 字数偏差超限时不询问,自动接受

duanju revise

按指定模式修订某一章(在项目目录内运行),覆盖前自动备份原文。

duanju revise <章号> --mode <模式> [--note "<补充要求>"] [--yes]
参数 说明
<章号> 必填。要修订的章号
--mode 必填。四选一:改写(重写句子对白)/ 扩写(扩到原文 1.3-1.5 倍)/ 润色(顺文字去重复)/ 重写节奏(压说明提冲突)
--note 可选。你的具体要求,如 --note "对白再犀利一点"
--yes 跳过「是否更新角色状态快照」的询问

示例:

duanju revise 3 --mode 扩写 --note "把天台对峙那场戏写足"

duanju export

导出成书 txt(纯本地操作,不调 AI、不花钱)。

duanju export [目录] [--merged] [--chapters]
参数 说明
[目录] 可选。项目文件夹路径,默认当前目录
--merged 整本合并为一个 txt(书名 + 简介 + 全部章节)。两个开关都不加时的默认行为
--chapters 每章一个 txt,导出到 exports/chapters/

duanju status

查看项目进度与下一步建议(纯本地,不调 AI、不花钱)。

duanju status [目录]

duanju run

全自动模式,见下一节。


五、全自动模式(run --auto)

不想一步步确认?一条命令从题材直达成书:

duanju run --auto "替嫁三年,残疾大佬站起来了"

自动串联:创建项目 → 生成六包(自动接受)→ 选书名(自动选第一梯队第 1 个)→ 逐章写完全部章节 → 导出整本 txt。

可选参数:

参数 说明
--auto 必须加,防止误触发
--words <字数> 单章目标字数,如 --words 2500,默认 3000

费用提醒:全自动模式会连续调用模型几十次(六包 7 次 + 书名 1 次 + 每章 2 次 × 10-20 章),一口气消耗的 token 相当可观,请确认账户余额充足。中途任何一步失败都会保留已完成的产物并提示,在原目录重跑同一条命令即可续传,已完成的部分不会重复花钱。

建议:第一次使用先走分步流程(package / title / write),熟悉产物质量后再用全自动。


六、项目文件夹里都是什么

我的书/
├── duanju.json          项目档案:题材、主类、交接字段、选定书名等(程序自动维护)
├── 01-题材归类.md        六包之一:判断主类/子类、短剧适配度
├── 02-题材包.md          六包之二:一句话选题、核心卖点、目标情绪
├── 03-人设包.md          六包之三:女主/男主/反派人设卡、关系链、核心冲突
├── 04-标题简介包.md      六包之四:书名候选、简介、标签、封面短句(选定书名后回填于此)
├── 05-开篇包.md          六包之五:开篇场景、第一冲突、第一反转、章末钩子
├── 06-章纲包.md          六包之六:总纲 + 每章四要素(核心事件/情绪点/反转点/结尾钩子)
├── 07-风险自检.md        AI 对六包的自查报告与修订建议
├── titles.md            20 个书名候选与理由
├── chapters/            正文,每章一个文件:001.md、002.md……
├── state/characters.md  角色状态快照(每章写完自动更新,保证角色不「失忆」「穿越」)
└── exports/             导出的成书 txt

这些全是普通文本文件,可以用记事本、Typora 等任何编辑器打开修改。改完后继续运行命令,后续生成会以你改过的文件为准。


七、常见问题

提示「模型调用失败」/ Key 无效怎么排查?

按顺序检查:

  1. API Key 是否复制完整、是否已过期,账户是否有余额
  2. 模型名称是否拼写正确、你的账户是否有权限用它
  3. 网络是否可达(部分官方 API 国内需要代理)
  4. OpenAI 兼容接口的 baseURL 是否正确(通常以 /v1 结尾)

修一项验一次:运行 duanju config 重新配置,它保存前会自动发测试消息验证。

生成到一半断网 / 关机 / 按了 Ctrl+C,白花钱了吗?

没有。每个包、每一章都是生成完立刻保存的。重新运行同一条命令(如 duanju packageduanju write)会自动跳过已完成的部分,从断点继续。

对某个阶段的结果不满意,想整个重做?

--force

  • duanju package --force 重新生成全部六包
  • duanju title --force 重新生成书名候选

只想重写某一章正文:duanju write <章号>;只想局部加工:duanju revise <章号> --mode 润色。重写/修订前原文都会自动备份成 .bak-时间戳 文件,随时可以找回。

「字数偏差超限」警告是什么意思?

每章有目标字数(默认约 3000 字),实际生成偏差超过 ±15%(少于 2550 或多于 3450 字)时会警告,并让你选择「接受本章」或「重写本章」。这是为了保证成书总篇幅落在 1.5 万 - 3 万字的短篇区间。

怎么换一个模型/厂商?

  • 全局换:重新运行 duanju config,新配置对所有项目生效
  • 只给某本书换:打开该项目的 duanju.json,加一段 modelOverride(只允许 provider / model / baseURL 三项,不能也不需要填 Key):
"modelOverride": { "provider": "openai-compatible", "model": "deepseek-chat", "baseURL": "https://api.deepseek.com/v1" }

提示「交接字段缺失」「不是 duanju 项目」?

  • 「交接字段缺失」:说明六包没生成全或被改坏了,先运行 duanju package 补齐
  • 「不是 duanju 项目」:说明当前目录下没有 duanju.json,请先 cd 进入项目文件夹,或用 duanju new 创建

八、内置知识库说明

安装包自带 knowledge/ 文件夹,内含三套 v1.1 创作方法论(共 42 个文件),是每次生成时喂给 AI 的「教材」:

knowledge/
├── packaging/   选题包装方法论(SKILL.md + 14 个参考文件:分类地图、人设原型、开篇钩子、风险清单等)
├── title/       书名锻造方法论(SKILL.md + 10 个参考文件:命名原则、结构公式、关键词库、否决规则等)
└── writing/     正文创作方法论(SKILL.md + 15 个参考文件:写作原则、文风指南、章节引擎、修订模式等)

程序会按你的题材主类自动挑选对应文件注入(比如古言题材只注入古言相关的模式库)。

不建议修改 knowledge/ 里的文件:生成质量高度依赖这些方法论的原文表述,改动可能导致生成质量下降或结构校验失败。想影响生成结果,更好的方式是修改项目文件夹里的六包产物,或在确认环节选择「重写本包」并附上你的要求。如果确实想替换某些方法论文件,请使用下面的「自定义知识库」功能,不要直接改安装包内的文件(升级会被覆盖)。

九、自定义知识库(按文件覆盖内置)

从 v0.2.0 起,你可以用自己的知识库目录按文件覆盖内置 knowledge/:加载每个知识文件时,先查你的目录里有没有同构相对路径的同名文件,有就用你的版本,没有就自动回落内置版。只想改一个文件就只放一个文件,CLI 升级后新增的内置文件也会自动生效。

目录结构:与内置 knowledge/ 同构

比如只想替换书名关键词库和文风指南,目录里就只放这两个文件(相对路径必须和内置一致):

my-knowledge/
├── title/
│   └── references/
│       └── keyword-bank.md        ← 覆盖内置的书名关键词库
└── writing/
    └── references/
        └── prose-style-guide.md   ← 覆盖内置的文风指南

其余 40 个文件继续使用内置版;目录里多出来的、内置不认识的文件会被忽略。

三种配置方式(优先级从高到低)

  1. 命令行参数(临时用一次,相对路径相对当前目录):

    duanju title --knowledge ../my-knowledge

    package / title / write / revise / run 五个调模型的命令都支持 --knowledgerun 会透传给全部子步骤。

  2. 项目 duanju.json(只对这个作品生效,相对路径相对项目目录):

    {
      "idea": "总裁的替嫁新娘",
      "knowledgePath": "../my-knowledge"
    }
  3. 全局配置 ~/.duanju/config.json(所有作品默认生效,必须是绝对路径):

    {
      "provider": "openai",
      "model": "gpt-4o",
      "knowledgePath": "D:\\my-knowledge"
    }

    也可以在 duanju config 向导里填写(可留空跳过)。

覆盖提示

命中自定义文件时,生成前会打印一行清单,让你随时知道这次用了哪些自定义方法论:

使用自定义知识文件:title/references/keyword-bank.md(共 1 个)

配置的目录不存在会直接中文报错(含解析后的完整路径与配置来源);自定义文件内容为空会警告但照用;不配置 knowledgePath 时行为与旧版本完全一致。

生成质量自担声明

内置方法论经过大量真实模型验证,替换后的生成质量由你自己负责:工具不校验自定义文件的内容结构,写法偏离原方法论可能导致生成质量下降或结构校验反复重试失败。建议从内置文件复制一份改起,保留原有的小节骨架。


许可证

本项目(含源码与内置知识库 knowledge/)仅供个人学习与非商业使用,禁止商用与再分发,详见 LICENSE

你用本工具生成的小说内容归你自己所有——投稿、签约、变现都与本许可无关,放心创作。商业授权请联系作者。

About

短剧类短故事引擎

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages