📖 网文 → 抖音推文改编器 · 工业化代码版 V1.1
> 可执行代码技能 — 真实 Python 脚本,不是规则文档
> v1.1 全面补齐:对齐 ark-novel-to-tuiwen v5.0 全部规则章节 + 电影级 AI 生视频分镜规范
核心定位 → 30 秒快速上手
就三步:
- 把小说原文存为
novel.txt - 运行
python3 forge.py pipeline --input novel.txt - 拿到 prompt 发给 LLM → 拿到推文 →
check自检 → 完成
想自定义? 加个 --style 就行:
--style concise→ 「精简一点」— 只保留核心爆点,输出缩短 40-50%--style detailed→ 「详细展开」— 高光段给足篇幅,节奏放慢一点--style fast→ 「快节奏」— 加大爽点密度,最大化炸裂感--style suspense→ 「悬疑风」— 压抑推进,反转结尾--style no_shots/--no-shots→ 「只要口播不要分镜」— 跳过分镜生成
输出:标题 / 人物卡 / 场景卡 / 口播叙事 / 分镜脚本 全给你。
> 💡 团子版相比 ark 的好处:相同输入 = 相同分析结果,可复现、可批量、合规一键自动修复。
一、如何使用
命令行方式(推荐)
python3 forge.py pipeline --input novel-chapter95.txt --style default
对话式方式(配合 LLM)
把 pipeline 生成的 tuiwen_prompt.md 内容直接发给 Claude / GPT / DeepSeek / 团子,
或者说:"帮我把这段小说改成推文" + 粘贴原文,LLM 会按 prompt 里注入的规则执行。
不需要联网 / 不需要 @ 谁,代码本地跑即可。
二、输入异常处理
工具/LLM 收到输入后先快速判断,不合格的直接告诉用户,不硬生成:
| 情况 | 怎么处理 |
|---|---|
| 没给正文,只说了书名 | 「请把需要改编的章节原文粘贴给我,光有书名我找不到内容。」 |
| 粘贴的不是小说/看不出是小说 | 「这看起来不像是小说章节,请确认一下~我需要小说原文才能改推文。」 |
| 原文太短(< 200 字) | 「这段内容太短了,连一个完整的高光段都撑不起来。给我多一点内容,最好至少一个完整章节。」 |
| 原文是纯对话/纯描写/流水账 | 照常生成,但在开头标注:「⚠️ 这章高光点较少,叙事会偏短。」 |
| 用户问怎么用、能干什么 | 简要说明 5 样输出(标题/人物卡/场景卡/口播/分镜),然后等用户给原文。 |
| 原文正常 | 直接按工作流程开始干活,不做多余说明。 |
代码层判定:CLI 会自动执行以下检查
- 输入文件不存在 → 提示重新指定
- 字符数 < 200 → 警告
- 检测不到叙事关键词 → 提示可能非小说
三、能力边界
| ✅ 能做 | ❌ 不能做 |
|---|---|
| 穿越/都市/玄幻/悬疑/古言/系统文/虐文等主流网文体裁 | 纯文学/散文/诗歌(非叙事性文本) |
| 单章到最多约 2 万字(约 15 章)一次输入 | 整本书一次丢过来(会崩) |
| 中文原文 → 中文推文 | 英文/其他语言原文 |
| 自动识别体裁、自动匹配情绪模型 | 你的私人写作风格模仿(这是改写工具不是风格克隆) |
| 搞笑/爽文/虐心/悬疑 四种情绪 | 恐怖/灵异(合规限制) |
| 电影级 AI 生视频分镜 | 直接生成视频(需搭配 Seedance/可灵/即梦) |
四、严禁红线(文案+分镜双通过)
以下内容绝对不会出现在输出中——文案和分镜都得过:
| 类别 | 红线 | 替代做法 |
|---|---|---|
| 血腥暴力 | 禁止描写具体血腥画面(喷血/断肢/内脏/伤口特写)。禁止渲染虐待、酷刑、自残。 | 用情绪结果代替画面:「他倒下了」不写「血溅三尺」;疼痛用表情和身体反应表达。 |
| 色情擦边 | 禁止任何性暗示、性挑逗、身体部位刻画描写、暧昧语境撩拨。 | 感情戏停留在牵手/对视/微笑等安全线内。拥抱是上限。 |
| 诱导关注 | 禁止「点关注」「关注我」「点赞收藏」等直接诱导。禁止暗示关注后有奖励。 | 用自然悬念结尾代替:「想知道后来怎样了吗?下集继续」。不加指令性动词。 |
| 封建迷信 | 禁止宣扬算命、驱鬼、法术治病等现实世界的迷信。 | 玄幻/系统文属于虚构世界观,不做真实世界的迷信宣扬即可。 |
| 违法犯罪 | 禁止美化犯罪过程、传授犯罪方法。 | 反派作恶只交代结果不展示过程。 |
| 恐怖惊悚 | 禁止僵尸、鬼怪、灵异等令人强烈不适的恐怖画面描述。 | 悬疑文保持紧张感但不出现恐怖形象。 |
| 负面价值观 | 禁止炫富拜金、厌世轻生、情感操控、校园霸凌美化。 | 逆袭爽文的"有钱"是打脸工具,不能写成炫富。 |
注意事项
- 战斗/打斗可以写,但不写血腥细节——写气势、写结果、写对手的反应,不写伤口长什么样
- 古风文里的「斩首」「军棍」是剧情设定,只交代结果(「判了三十军棍」),不渲染过程
- 系统文的「叮!」是仪式感保留,但不过度(全文不超过 3 次)
合规自动化
python3 forge.py fix --input tuiwen.txt --output fixed.txt
自动扫描 20+ 违规词并从替代方案库中随机选一个替换(A/B 级自动改,C 级仅提醒)。
五、爆点节奏
推文的核心竞争力不是文笔,是爽点密度和钩子频率。
节奏硬指标
- 每 200-300 字至少一个爽点/反转/小爆点 — 不能连续 3 段没有冲突推进
- 前 3 句(约 50 字)就是钩子 — 不能铺垫,第一句就炸。说完前 3 句观众还没兴趣 = 废了
- 每段结尾留一个小悬念 — 不是整段讲完才甩钩子,是每段最后一句都让人想往下读
7 种爆点类型(交替使用,不要同一类型连用)
| 类型 | 示例 |
|---|---|
| 身份反转 | 所有人以为我是废材,其实我是…… |
| 实力碾压 | 别人做不到的事,我轻松做到了 |
| 信息炸弹 | 说出一个不该知道的事 |
| 关系反转 | 敌人忽然帮我 / 朋友忽然捅刀 |
| 奖励震撼 | 系统给的奖励超出所有人的想象 |
| 台词暴击 | 一句话把对方怼得无话可说 |
| 画面冲击 | 某个画面出现,所有人呆住 |
节奏图谱
钩子(1段) → 💥小爆 → 过渡(1段) → 💥中爆 → 过渡(1段) → 💥💥大爆 → 过渡 → 💥💥💥核爆 → 悬念结尾
❌ 不能:钩子 → 过渡过渡过渡 → 爆点(前面的人早划走了)
❌ 不能:钩子 → 💥💥💥 → 平淡 → 平淡 → 平淡(高潮来得太早后面全废了)
代码层自动扫描:forge.py analyze 会输出每段的爆点密度分布图,一眼看出节奏问题。
六、高光扫描法则
不按字数硬算,按高光密度自然产出。 推文要的是"爆点串联",不是"每章均匀压缩"。
一个章节没爆点,就该被跳过;一个章节全是炸点,就该让它炸完。
高光判定
抓这些 → 放进叙事,逐层展开:
- 冲突/对抗/打脸时刻
- 身份/实力反转
- 关键对话/名场面台词
- 爽点爆发/碾压画面
- 系统提示/奖励揭晓
- 悬念钩子
跳过这些 → 最多一句话带过去:
- 环境描写、风景、天气
- 纯设定铺垫/背景说明
- 过渡赶路/吃饭睡觉
- 次要角色唠嗑
- 重复性交代
串联方式
被跳过的内容用一句话当桥梁。3 页赶路就一句「走了三天,终于到了城门口」。不要展开。
输出自然长度
高光多就长,高光少就短。不灌水、不硬撑。500 字能讲清楚就不要凑 800 字。3000 字讲不完就不要砍到 2000 字。
代码层实现:forge.py analyze 会给每段打 0-100 分,>= 25 分标记为 🔥 高光,skip_score >= 20 标记为 ⏭️ 跳过。
七、9 条创作规则
1. 全程第一人称
所有叙述以「我」的视角展开。原文第三人称全部转换。
❌ 错:赵风坐在城墙上,看到下面大军压境
✅ 对:我坐在城墙上,往下一看,黑压压全是人头
2. 保留完整剧情线(不是全部剧情)
推文不是缩写,是扫描原文→抓出高光点→把高光点串成一条自洽的故事线。
- 起因/背景要说清楚(你是谁、在什么处境)— 只给必要信息,不铺陈
- 核心冲突要推进(发生了什么、怎么发展)— 只推进高光段,跳过平淡段
- 高潮要有爆发力(最炸的画面/台词/反转)— 这个不能省,给足篇幅
- 结尾要停在悬念处(不把故事讲完)
被跳过的内容,一句话交代即可。
3. 用画面说话,不写内心戏
禁止「我想」「我觉得」「他心想」「她心里很痛苦」。用动作、表情、台词、环境来传达情绪。
❌ 错:我心里很害怕
✅ 对:我的手在抖,后背全是冷汗
❌ 错:我觉得很委屈
✅ 对:鼻子一酸,眼泪就下来了
4. 短句为主,但允许适当叙事句
大多数句 ≤ 20 字,但推进剧情时可以有 30-40 字的叙事句。
关键是节奏有张有弛:冲突时用短句顶上去,过渡时用叙事句把故事讲清楚。
过渡句:我穿越过来的第三天,还没习惯这个身体的身份
冲突句:刀架在我脖子上了
过渡句:刑场上跪了三十多个人,没人敢出声
冲突句:刀举起来的那一刻,我闭上了眼
5. 口语化,不许端
不是写小说,是讲故事。用日常说话的口吻。
- 「不多时」→「没过一会儿」
- 「夕阳西下」→「太阳快落山了」
- 「他开口道」→「他开口说」
- 「程昱恍然大悟」→「仲德一拍脑门:俺咋没想到!」
完整替换表见 references/rewrite-vocab.md。
6. 情感递进要有层次(5 段式节奏)
- 钩子开头 → 最夸张的反差/冲突/悬念,一句话炸开
- 背景铺垫 → 我是谁、什么处境、为什么会冲突(只给必要信息,别铺垫过头)
- 冲突推进 → 核心高光,层层递进,每个高潮比前一个更大
- 情绪顶满 → 全篇最炸的画面/台词/反转,这是整段叙事存在的理由
- 钩子结尾 → 停在最吊胃口的地方,绝对不把故事讲完
5 段之间没有固定比例,由原文高光分布决定。唯一铁律:结尾段必须悬着。
7. 体裁适配
不同体裁的情绪模型不同(详见 references/emotion-curve.md):
- 穿越/重生:打信息差 + 碾压感,现代知识 vs 古代规则
- 装逼打脸:期待→冲突→爆发→碾压,爽感逐层拉满
- 玄幻修真:境界碾压、越级反杀,战力差视觉化
- 系统文:期待→惊喜→满足→新目标,奖励层层递进
- 悬疑/虐文:压抑→震惊→最强冲击,不给缓和
- 古言/宫斗:宅斗权谋→身份反转→反击高潮
8. 结尾必须留钩子
不把故事讲完。最后一句话让观众迫不及待想追下集。
例:直到三天后,圣旨砸到我脸上,我才知道什么叫真正的麻烦
例:我转身要走,身后传来她的声音:你杀了我父亲对吧
例:系统提示音又响了,这次的奖励让我腿都软了
9. 分镜脚本:一段不漏,一段一镜
口播叙事是按空行分隔的——一个空行段 = 一个镜头单元。
硬约束:叙事有多少空行段,分镜就必须有多少个,不能漏、不能合并。
- 画面描述用自然语言(v1.1 起支持 AI 生视频提示词双通道)
- 描述核心信息:人物位置/动作/表情/环境光线/镜头角度/情绪氛围
- 场景切换时拆成两个镜头
- 纯过渡段(如「走了三天」)配意境空镜:天空/道路/建筑剪影
- 极短段(如「我???」「行吧。」)也要配镜——一个表情特写/微动作就够了,不跳过
代码层强校验:forge.py check 会自动数叙事段数和分镜数,不一致直接判失败。
八、工作流程 5 步
Step 1 — 扫读原文,标出高光段(代码自动)
python3 forge.py analyze --input novel.txt
输出:
- 🔥 冲突/反转/打脸/碾压 — 核心叙事素材
- ⏭️ 环境/过渡/闲聊/重复交代 — 一句话带过去
- 🎯 最炸的一个画面 — 整段叙事的高潮段位置
Step 2 — 提取 + 串联(代码 + LLM)
从高光段中提取:
- 钩子点:最炸的反差/冲突/悬念,选一个当开头
- 爽点链:按时间顺序梳理高光,每个比前一个炸裂
- 核心人物:推动高光情节的人,3-5 人
- 核心场景:高光发生的舞台,3-5 个
- 体裁判定 → 匹配情绪模型
跳过段 → 用 1-2 句桥梁串联。
Step 3 — 创作叙事(LLM 执行)
按 9 条创作规则,从钩子写到悬念结尾。高光段给足篇幅展开,过渡段一笔带过。不灌水、不硬撑。
Step 4 — 生成分镜脚本(LLM 执行)
叙事完成后再做分镜。先保证叙事完整,再回头配画面。
流程:
1. 数一下叙事共有多少空行段
2. 逐段回看,想象"屏幕上应该有什么"
3. 每个空行段写一个画面描述(5 要素:人物动作/环境/光线/镜头角度/情绪氛围)
4. v1.1 新增:可选生成电影级 AI 生视频提示词(10 要素)
5. 检查:分镜数量 = 叙事段落数?不一致就回去补
Step 5 — 质量自检 + 合规审查(代码自动)
python3 forge.py check --input tuiwen.txt
自动过 15 项检查(分组 checklist 见下节)。
九、12 项质量自检 checklist
对齐 ark v5.0 原版 12 项 + 团子代码版扩展 3 项:
叙事质量(6 项)
- [ ] 全程第一人称?(代码统计"我"vs 第三人称迹象比例)
- [ ] 剧情线完整、不会看不懂?(人工判定,代码检查关键节点)
- [ ] 没有心理描写?(代码扫描"我想/我觉得/他心想"等)
- [ ] 画面具体、每段都能想象出来?(人工判定 + 分镜数量间接验证)
- [ ] 口语化、没有书面腔?(代码扫描"不多时/夕阳西下/万籁俱寂"等)
- [ ] 结尾有悬念、够不够让人想看下集?(代码扫描结尾话术含"下集/答案/?"等钩子词)
爆点节奏(2 项)
- [ ] 前 3 句就是钩子?(代码扫描首段前 50 字爆点信号)
- [ ] 没有连续 3 段以上无冲突推进?(代码统计爆点密度)
分镜质量(2 项)
- [ ] 分镜数量 = 叙事空行段数?(代码硬校验,数两遍)
- [ ] 有没有极短段/过渡段被跳过了?(代码交叉比对)
内容合规(2 项)
- [ ] 没有血腥/色情/迷信/诱导关注/违法犯罪/恐怖/负面价值观内容?(代码 20+ 词库扫描)
- [ ] A 级违规 = 0?(代码硬校验,> 0 直接判失败)
得分制
- 硬约束 3 分/项 × 6 项 = 18 分
- 建议 2 分/项 × 6 项 = 12 分
- 提示 1 分/项 × 3 项 = 3 分
- 满分 33 分,团子版跑通实测最高 32/32
十、输出模板
严格按以下结构输出(LLM 输出后代码会自动解析):
━━━━━━━━━━━━━━━━━━━━━━
【标题】
(≤ 15 字,反差 + 悬念)
━━━━━━━━━━━━━━━━━━━━━━
【人物卡】
① 主角(我):身份 + 核心特征,≤ 15 字
② 配角 A:关系 + 核心特征,≤ 15 字
③ 配角 B:关系 + 核心特征,≤ 15 字
(3-5 人,只列推动当前剧情的关键人物)
━━━━━━━━━━━━━━━━━━━━━━
【场景卡】
① 场景名:时间/地点/氛围,1 句
② 场景名:时间/地点/氛围,1 句
③ 场景名:时间/地点/氛围,1 句
(3-5 个,只列核心场景)
━━━━━━━━━━━━━━━━━━━━━━
【完整口播叙事】
(全文逐段输出,每段之间空一行。段落长度由叙事节奏决定:
冲突段短促、过渡段精炼、高潮段给足画面。不要在段落中间堆过多信息。)
全文注意:
- 全程第一人称"我"
- 画面化,用动作/表情/台词讲故事
- 口语化,像在讲给朋友听
- 5 段式节奏:钩子→背景→冲突→高潮→悬念结尾
……
……
……(长度由高光密度决定,不灌水不硬撑)
━━━━━━━━━━━━━━━━━━━━━━
【结尾话术】
(1-2 句,用自然悬念结尾,不用「点关注」「点赞收藏」等指令动词)
例:你猜她最后选了谁?下集继续!
例:想知道后来怎样了吗?答案在下一章。
━━━━━━━━━━━━━━━━━━━━━━
【分镜脚本】
(每段口播叙事对应一个镜头。基础格式:镜号 + 画面描述)
镜01|旁白:……(该段第一句口播原文,截取前 10-15 字以定位)
画面:……(1-2 句描述画面内容,包含人物动作/环境/光线/镜头角度/情绪氛围)
镜02|旁白:……
画面:……
(以此类推,一段一镜。场景切换时拆成两个镜头)
━━━━━━━━━━━━━━━━━━━━━━
【AI 生视频提示词】(可选,--style cinematic 启用)
镜01 · 10 要素:景别/机位/运镜/构图/光线/氛围/演员调度/画外音/音效/生视频提示词
(可直接扔进 Seedance/可灵/即梦/Sora)
十一、常见违规对照
创作问题
| 违规写法 | 问题 | 修正 |
|---|---|---|
| 「我心里想,这次一定要赢」 | 心理描写 | 「我攥紧拳头,指节发白」 |
| 「赵风开口道:……」 | 第三人称 | 「我开口:……」 |
| 「她内心痛苦万分」 | 抽象+心理 | 「指甲陷进手心,嘴唇咬出血」 |
| 「夕阳西下,断肠人在天涯」 | 书面语 | 「太阳落山了,我一个人站在路边」 |
| 「此时已是深夜,万籁俱寂」 | 废话铺垫 | 「夜深了」或直接删掉 |
| 「两人陷入沉默」 | 抽象 | 「我俩谁也不说话,能听见心跳」 |
| 「他眼神复杂地看着我」 | 模糊 | 「他盯着我,嘴角抽了一下,又别过头去」 |
合规问题
| 违规写法 | 问题 | 修正 |
|---|---|---|
| 「刀落,血溅三尺」 | 血腥画面 | 「刀落那一刻,所有人都闭眼了」 |
| 「跪求大家点个关注」 | 诱导关注 | 「下集继续」 |
| 「他舔了舔嘴唇,眼神暧昧」 | 性暗示 | 「他盯着我,嘴角微微翘起」 |
| 「我把他打得满脸是血」 | 暴力细节 | 「他趴在地上,不敢抬头」 |
| 「大夫切开伤口……」 | 伤口特写 | 「大夫处理完伤口,我咬着牙没吭声」 |
十二、配套参考文件
- 情绪模型库:references/emotion-curve.md — 6 种体裁的节奏模板(比 ark 多 1 种)
- 多体裁范例库:references/examples.md — 完整改写案例(三国穿越/都市打脸/悬疑虐心)
- 改写词库:references/rewrite-vocab.md — 原文→推文 6 大类替换表 + 合规替代词库
十三、FAQ 常见问题
Q:生成的叙事太短/太长了怎么办?
正常。输出长度由原文高光密度决定,不灌水不硬撑。如果觉得某段展开不够,告诉我具体哪段要加,或者跑 --style detailed。
Q:分镜数量为什么这么多?
一段一镜,叙事有多少空行段就有多少镜头。如果某个镜头想合并,告诉我就行。但短视频标准就是这样——画面切换要快。
Q:古风文打斗场面怎么符合合规要求?
写气势不写血腥。写「一刀砍下去,全场安静了」不写「血溅三尺,脑袋飞出去」。合规词库已收录 20+ 词条自动替换。
Q:怎么让它输出更短/更适合 1 分钟视频?
跑 --style concise 或 --style fast。会提高高光门槛,只保留最炸的爆点。
Q:生成的不是第一人称怎么办?
告诉 LLM「换成第一人称」重新生成。正常情况下 prompt 已经锁死了全程第一人称。或者用 forge.py check 校验,会自动统计"我"出现次数是否 > 第三人称迹象 × 3。
Q:怎么把分镜直接扔进 AI 视频模型?
v1.1 起支持电影级 10 要素分镜(景别/机位/运镜/构图/光线/氛围/演员调度/画外音/音效/生视频提示词),可直接复制到 Seedance / 可灵 / 即梦 / Sora / Runway 等平台。
Q:代码版和 ark 规则版哪个更好?
互补,不冲突。
- ark 版:文档规则清晰,适合 LLM 独立判断
- 团子代码版:可复现、可批量、合规自动修复、可视化分析
- 推荐:ark 规则做 LLM 系统 prompt + 团子代码做前置分析和后置质检
十四、7 个 CLI 子命令速查
# 版本信息
python3 forge.py version
# 分析原文(体裁+高光+可视化)
python3 forge.py analyze --input novel.txt
# 生成转换 prompt
python3 forge.py prompt --input novel.txt -o prompt.md --style default
# 质量+合规双检
python3 forge.py check --input tuiwen.txt
# 自动修复合规违规
python3 forge.py fix --input tuiwen.txt -o fixed.txt
# 完整流水线(推荐首选)
python3 forge.py pipeline --input novel.txt --style default
# 查看内置范例
python3 forge.py examples
python3 forge.py examples --name case-01-chuan-yue
十五、代码架构
novel-to-tuiwen-forge/
├── forge.py 主 CLI 入口(7 个子命令)
├── SKILL.md 本文档
├── README.md
├── package.json
├── lib/
│ ├── genre_detector.py 体裁识别器(6 种模型打分)
│ ├── highlight_scanner.py 高光扫描器(段落级打分+可视化)
│ ├── compliance_checker.py 合规检测器(三级红线+自动修复)
│ ├── prompt_builder.py Prompt 生成器(结构化转换指令)
│ └── quality_checker.py 质量自检器(15 项硬约束)
├── data/
│ └── dictionaries.py 核心词库(合规/心理/书面/情绪/爆点)
├── references/ ✨ v1.1 新增
│ ├── emotion-curve.md 6 种体裁情绪曲线模型
│ ├── examples.md 完整改写范例库(三国穿越/都市打脸/悬疑虐心)
│ └── rewrite-vocab.md 原文→推文改写词库
├── examples/
│ ├── case-01-chuan-yue.md 完整案例
│ └── README.md
├── templates/
│ └── prompt-default.md
└── tests/
├── sample_novel.txt
└── sample_tuiwen.txt
十六、依赖
零第三方依赖! Python 3.8+ 标准库即可。
十七、版本历史
| 版本 | 日期 | 更新内容 |
|---|---|---|
| 1.1.0 | 2026-07-04 | 对齐 ark v5.0 全部规则章节:补齐 15 项缺失内容(输入异常处理/能力边界对照表/7 类严禁红线完整替代表/注意事项/爆点节奏图谱/高光扫描法则/9 条创作规则/工作流 5 步/12 项质量自检 checklist 分组/输出模板严格版/常见违规对照表/FAQ 6 问 + 电影级分镜);新增 references/ 下 emotion-curve.md / examples.md / rewrite-vocab.md 三个参考文件 |
| 1.0.0 | 2026-07-04 | 首发工业化代码版:7 个 CLI 子命令,6 种情绪模型,7 类爆点识别,20+ 词合规库,15 项质量自检 |
本技能包由团子 🦐 创建,知灵技舍持续维护。
novel-to-tuiwen-forge v1.1.0 | 2026-07-04 | 对齐 ark v5.0 + 电影级分镜升级 📖