USAGE MANUAL · v2026.10

凤希AI 技能操作手册
33 个技能,怎么用

这不是一份功能介绍。这是一份「你该说什么话、它会给你什么产物、它不干什么」的对照表。 每张卡片都按同一个格式写:一句话是什么、你张口怎么说、想手动跑时打哪条命令、产出什么、边界在哪。

33 个技能 6 摊分工 4 条端到端流水线 更新 2026-10-21

00怎么用这本手册

别从头读到尾。按你此刻手里有什么来查。

这 33 个技能不是按「技术模块」分的,是按最终产出什么分的。所以查法也只有三种:

你现在的状态怎么查去哪一节
知道要什么产物
"我要一张封面"
直接翻对应的那一摊。图 → 第三摊,片 → 第四摊,字 → 第一摊。 二~六节
知道要做什么事
"我要发一篇公众号"
翻「四条端到端流水线」,那里是按业务串好的顺序,不用自己拼技能。 第七条
知道技能名
"fxai-poster 怎么跑"
翻附录速查表,一行一个,带入口命令。 附录 A
最重要的一点:这些技能的「使用方法」其实不是敲命令,是说人话。 每个技能的 description 里都写死了触发词,你说到那些词,它自己就加载了。 下面的卡片里,这样的红字就是能直接触发它的说法——照抄就行,不用记命令。 命令是给你想手动跑、或者想改参数时用的。

01开工前的四条前提

这四条不满足,后面所有技能都会以一种很奇怪的方式失败。

1 · 一份全局配置,所有技能共用

路径固定在 ~/.workbuddy/fxai_global.json。技能不各自存配置,全部读这一份:

字段管什么本机当前值
comfy_urlComfyUI 地址,生图/出片/写歌全走它127.0.0.1:8188
whisper.*转写服务,本机 8185 / 云端两档prefer_local: true
tts.engines两套 TTS:qwen3tts 8086 / cosyvoice 8182default_engine: qwen3tts
tts.speakers音色表,含参考音频与参考文本2 个音色
weixin_gzh公众号凭据 + 账号清单凤希AI伴侣
face.profiles换脸服务,一台机器一档仙宫云 · FaceFusion

2 · ComfyUI 是「服务端模式」——这条最容易踩

所有要 GPU 的技能(生图、四视图、场景图、MV、短剧、写歌)都不自己启服务,只按地址发 HTTP。

3 · 一个选题一个目录

目录结构是固定契约,好几条流水线会按名字找文件:

<工作区>/<选题名>/ ├── article/ 正文 md、排版 html ├── image/ 封面、正文图、场景图 ├── music/ 歌曲、伴奏、人声 ├── video/ 成片、中间片段 ├── doc/ 资料、原文 └── _tmp/ 临时文件

目录本身就是备份。不用另建归档,一个选题一个文件夹,做完不删。

4 · 两条硬规矩,违反会静默失败

① image/ 里不要放中文名图片。 封面.png、封面.jpg 会被安全策略直接拒掉(复制、保存、重命名全被拦)。 一律用 ASCII 名:cover.png、fig1.png、scene_01.png。

② 正文 HTML 里的图片 src 要写绝对路径。 上传公众号的脚本不解析相对路径,是直接拼当前目录找文件的,写 image/fig1.png 会找不到。

02全景:六摊分工

按「最终产出什么」分,刚好六摊。前三摊是原料,第四摊是组装,后两摊是地基和体检。

#这一摊数量干的事
一 写作与脚本 6 把想法变成能直接进下一道工序的文本:口播稿、分镜、小说、公众号、战斗设计、视频提示词
二 声音 4 写歌、配音、转写、人声分离。四个首尾相接,能自己成小闭环
三 图像 7 文生图、场景图、角色四视图、海报、角色库、换脸、转 JPEG
四 视频 9 四条成片产线(数字人 / 幻灯片 / MV / 短剧)+ 三个叠字工具 + 一个自动剪辑
五 基础设施 5 ComfyUI 客户端、进度监听、两个云平台部署、自动更新、技能打包
六 规范与复盘 2 底层公共件、规范体检、内容复盘入库
前三摊不用全部用上。大多数活儿只用得上其中一摊——写篇公众号只碰第一摊的 1 个技能。 六摊是给「整条产线」用的,单点用随时可以只取一个。
第一摊 · 写作与脚本6 个

这一摊的产出有一个共同点:全是「能喂给下一个技能的格式」。口播稿的段落天然适合 TTS,分镜天然适合出图,提示词天然适合视频生成。不是巧合,是写完就在互相喂。

口播文案生成fxai-voiceover-script

把一段原文或一个想法,变成带情感语气标签的口播稿——念出来像人说话,不是念稿。

触发
给这段文案加语气提炼成口播稿写成能念的稿子改成四川话
命令
python script_gen.py --project <项目名> --text-file 文案.txt python script_gen.py --project <项目名> --source-file 原文.txt --lines 6
产出
口播文案_标签.md——每段带「用…的语气说」标签,下一道工序直接吃
边界
不合成音频(→ fxai-voiceover);不做字幕;人称一律用「我」不用「我们」,除非是邀约共做或引述原话
短剧剧本与分镜fxai-short-drama-script

写一集短剧,或把已有剧本拆成逐镜可拍的分镜脚本,顺手导出每镜的提示词。

触发
写一集短剧拆一下这个剧本写分镜脚本导出逐镜提示词
命令
python export_shot_prompts.py --run "<本集>/run_x_epN.py" -o 输出.md python scripts/check_storyboard.py --root "<项目根>"
产出
剧情档案 + 分镜脚本(含时长/景别/台词归属)+ 逐镜提示词
边界
不生成视频(→ fxai-short-drama);打斗镜要取招式术语先找 fxai-combat-design
小说创作fxai-novel-writing

短篇到长篇,带章节管理、标点规范化、段落重排和签约验收。

触发
写篇小说写个长篇检查一下这本小说按签约标准验收
命令
python scripts/check_novel.py <书名目录> python scripts/normalize_punct.py <书名目录> --apply python scripts/reflow_paragraphs.py <书名目录> --scene auto --target 60 --apply python scripts/check_signing.py <书名目录>
产出
书名目录 + 章节正文 + 签约验收报告.md
边界
不做公众号排版(→ fxai-weixin-gzh-publisher);封面单独走 fxai-poster
公众号发布fxai-weixin-gzh-publisher

从选题到草稿箱的整条链路:写稿、排版、画封面、导正文图、建草稿。本摊唯一会对外发东西的技能。

触发
写篇公众号排版做封面建草稿发公众号
命令
python scripts/make_cover.py --title "A|B" --subtitle "…" --motif cloud --out <项目>/image python scripts/export_figures.py --dir <项目>/image python scripts/wx_api.py draft-add --title "标题" --content article/news.html \ --cover <绝对路径>/cover.jpg --digest "摘要" --author "凤希AI" --comments 1 python scripts/wx_api.py precheck
规格
封面 1152×512;正文图宽 1152;发布版 JPEG quality=95 + subsample=0
边界
默认只建草稿,不群发。只有你明确说「发布 / 群发」才走 publish。正文 HTML 别命名成 正文.html,用 news.html
战斗设计fxai-combat-design

打斗戏专门件:从剧情卡到动作方案、招式术语取词、空间调度、分镜表。写打斗卡词的时候靠它。

触发
设计打斗剧情动作设计招式设计一打多清场双人对招
流程
创作卡 → 场景抽取 → 动作方案(等你确认)→ 招式检索(过合理性门禁)→ 术语取词 → 技能检索 → 剧情仿写 → 编译成稿
产出
战斗剧情 + 动作设计 + 空间路线 + 分镜表
边界
不写任何模型提示词(→ fxai-h3-video-prompt);不做资料入库
H3 视频提示词规范fxai-h3-video-prompt

MiniMax Hailuo H3 的提示词写作规范。MV、口播、短剧三条产线共用同一套——人物不一致、镜头乱动,先来查这一册。

触发
写 H3 提示词审一下这个提示词人物怎么不一致镜头乱动
两种分支
首尾帧 FL2VA + 音频参考(single 单场景 / multi 多场景)→ 三段式
全参考 Ref2VA + 音频参考(multiref 多参考)→ 六段式
铁律
音频=原音频,不另行设计音轨;提示词必须契合文案内容与场景道具;打斗镜先向 fxai-combat-design 取词
边界
不算音频分段(→ fxai-audio-video);不提交任务(→ fxai-workflow)
第二摊 · 声音4 个

只有 4 个,但这 4 个是首尾相接的:写歌出一首歌 → 人声分离拆出纯净人声 → 送给 TTS 改音色 → 改完的音频被 whisper 转写回文字。一个小闭环。

配音 / TTSfxai-voiceover

文本转语音。双引擎(qwen3tts / CosyVoice3),支持多音色、逐段换情绪、语速微调。

触发
配个音把这段念出来换个音色用四川话念
命令
python voice_gen.py --project <项目名> --text '大家好,今天这期讲三件事。' --speaker 女主000 python voice_gen.py --project <项目名> --script <项目>/口播文案_标签.md --name 口播 python voice_gen.py --project <项目名> --ref-audio voices/ref.wav --speaker 女主000
产出
分段 wav + 合并版。念法跟着标签走——逐段各用各的语气
边界
不出画面(→ fxai-digital-human-video);写稿在上一摊
写歌fxai-yue2

给一段风格描述 + 一段带分段标签的歌词,出一首能听的中文歌。

触发
做一首歌写首歌用这个风格配这段词做首翻唱
命令
python gen_song.py --style-file s.md --lyrics-file l.md --tag 歌名 python gen_song.py --style-file s.md --lyrics-file l.md --via copy --copy-from <已有音乐目录>
歌词格式
用分段标签写:[Verse] [Chorus] [Bridge]
边界
不做 MV(→ fxai-mv-pipeline);不分离人声(→ fxai-vocal-separate)
语音转文本fxai-whisper-transcribe

本地离线 STT。录屏、会议、口播视频扔进去,拿回可编辑文本。用得最多的其实是它。

触发
音频转文字把录音整理成稿视频提取文案转写
命令
$PY transcribe.py out.wav --lang zh --words --vad --out transcript.txt $PY whisper_client.py out.wav --lang zh --out transcript.md
产出
纯文本 / 带时间戳的文本(--words)
边界
不做字幕烧录(→ fxai-lyric-subtitle);跑之前必须设 KMP_DUPLICATE_LIB_OK=TRUE
人声分离fxai-vocal-separate

拆出纯净人声和伴奏。Mel-Band RoFormer 工作流,跑在服务端 ComfyUI。

触发
分离人声去掉背景音乐要伴奏只去个噪
命令
python separate_vocals.py <音频> <输出目录> # 分离 + 去噪 python separate_vocals.py --denoise <音频> [输出] [mix] # 只去噪(本地 ffmpeg,不动服务端)
产出
人声轨 + 伴奏轨(都去过噪)
边界
不改音色(→ fxai-voiceover);不写歌
第三摊 · 图像7 个

这一摊有个隐藏的主角:角色库。生图、四视图、换脸都从角色库取参考图,所以出来的脸才是同一张。先有角色,才有稳定的图。

文生图fxai-comfyui-image-gen

中文提示词直接生图,千问2.1 模板。生成的是角色库里的自有形象,避开他人肖像。

触发
画一张配张图出张图做封面图
命令
python image_gen.py "纯场景,山间清晨薄雾" --role "" --tag smoke_test
产出
PNG,HTTP 下载到本地并返回路径
边界
不换脸(→ fxai-face-edit);不保证多张脸一致(→ fxai-fourview-gen 建档)
场景图fxai-scene-gen

两种模式:空场景(只画环境,供 MV multiref 用)和含人物(把人画进场景,供 single/multi、短剧用)。

触发
生成场景图画个空场景把这个人放进场景
命令
python scene_gen.py # role=None → 空场景;role="woman"/"man" → 含人物
产出
场景图 PNG。数字人产线要求科技感(机房、代码大屏、数据流光带、操作台),纯咖啡馆不搭
边界
不依赖 MV 产线,可单独调;不做角色设定图(→ fxai-fourview-gen)
角色四视图 / 三视图fxai-fourview-gen

做「一致人物形象」的设定图。MV 多参考的人物绑定、短剧角色建档、动画角色设定,都从这一步开始。

触发
生成四视图出个三视图角色设定图把这个人做成三视图
命令
python fourview_gen.py # 四视图必须给参考图;三视图参考图可选
关键
三视图和四视图走两套独立工作流(threeview / fourview),互不复用
边界
不生成视频;不写角色设定文字(→ fxai-role-management)
海报 / 封面fxai-poster

三种模式,按「要不要 AI 出底图」来选。视频封面、短剧封面、MV 封面都走它。

触发
做张海报做个视频封面做短剧封面
命令
python poster.py --mode web --out-dir <项目> --name cover --size 768x1280 --theme 深色科技 python poster.py --mode image --out-dir <项目> --name mv_cover python poster.py --mode hybrid --out-dir <项目> --name drama_cover
三模式
web 纯网页排版,最可控  ·  image 纯 AI 生图底  ·  hybrid 生图底 + 网页排版压字(最常用)
边界
公众号封面有专用脚本(make_cover.py,1152×512 固定规格),别用这个代替
角色库管理fxai-role-management

本机角色表 ai_digital_human 的增删改查。改完客户端「AI伙伴」和「多角色配音」立刻可见。

触发
新建角色列出所有角色改一下这个角色删掉这个角色
命令
python scripts/role_mgr.py list python scripts/role_mgr.py add --title 新角色 --gender 女 --age 26 python scripts/role_mgr.py get 阿杰 python scripts/role_mgr.py update 阿杰 --hobby 篮球 python scripts/role_mgr.py delete 阿杰 --yes # 不加 --yes 只预演不删
边界
不做立绘与头像生成(→ fxai-fourview-gen);不做音色克隆(→ fxai-voiceover);不服务端同步
人脸替换 / 唇形 / 修复fxai-face-edit

换脸、视频换脸、唇形同步、老照片修复上色、人脸增强、去背景。任务提交到云端人脸服务。

触发
把 A 的脸换成 B让这个人说这段话修复老照片把背景去掉
命令
python face_edit.py health # 探活:队列、显卡、磁盘 python face_edit.py profiles # 有哪几台机器可切 python face_edit.py run --target-file 目标.mp4 --source-file 头像.jpg --processors 换脸 --out-dir . python face_edit.py faces --target 目标.mp4 --frame 0 # 画面里有几个人
素材位
换脸必须给 --source(头像);唇形同步必须给 --audio 且目标是视频。缺了服务端会拒
边界
不生图(→ fxai-comfyui-image-gen);不做数字人口播(→ fxai-digital-human-video);不管开关机(→ fxai-xiangongyun-deploy)
转 JPEGfxai-image-to-jpeg

把 PNG / 源图转成最高质量 JPEG,可按目标体积压。公众号发布版的固定规格就在这。

触发
转成 JPEG压到 1.5MB 以内图片太大了
命令
python to_jpeg.py --src <项目>/image --out <项目>/image/jpg python to_jpeg.py --src "<项目>/image/*.png" --max-mb 1.5 python to_jpeg.py --src 封面.png
默认
quality=95 + subsample=0 + optimize=True——这是公众号发布版的规格,别改
边界
不裁尺寸、不重绘
第四摊 · 视频9 个

这一摊分两类:四条成片产线(数字人 / 幻灯片 / MV / 短剧,各自从头到尾)和三个叠字工具 + 一个剪辑(能套在任何视频上,不假设项目结构)。

四条成片产线

数字人口播视频fxai-digital-human-video

口播音频 → 数字人出镜讲话的成片。走 multiref 多参考,吃 GPU,产线最重的一条。

触发
做条口播视频数字人出镜把这个稿子做成口播
命令
python dh_pipeline.py --project <项目> --script <项目>/口播文案.md python dh_pipeline.py --project <项目> --audio <音频.wav> --char-desc "…" --role woman
六步
S0 读齐规范 → S1 场景图 → S1.5 场景图拷回本地 image/ → S2 cards.json → S3 渲染+字幕 → S4 finalize.py → S5 check_delivery.py(全绿才算完)
交付物
成片_最终_{W}x{H}.mp4——画面 + 字幕 + 顶部标题卡 + 前 1.2s 静音写实封面。成片_{W}x{H}.mp4 只是中间产物
边界
不写文案(→ fxai-voiceover-script);不配音(→ fxai-voiceover)
幻灯片口播视频fxai-slide-video

口播文案配幻灯片式画面。纯 CPU,不占 GPU,出片快。同一段音频可以反复换画面。

触发
做条幻灯片视频配图视频PPT 视频
命令
python sv_pipeline.py --project <名> --spec segments.json --preset 快嘴爆款 python sv_compliance.py <segments.json> --titles titles.json # 文案+标题合规预检 python sv_media.py --project <名> --segs 段落画面映射.json
产出
成片 + 标题 + 合规报告
边界
不做数字人出镜;不做 MV
MV 产线fxai-mv-pipeline

音乐 → 图片 → MV 一条龙。强制分两段跑,中间停下来让人改写分镜——这是设计,不是缺陷。

触发
做首歌出个 MV给这首歌配画面
命令
python produce_song.py --song=<歌名> --phase music # 出歌 + 歌词对齐 + 分镜草稿 # —— 停下来,逐条改写 分镜剧本.md —— python produce_song.py --song=<歌名> --phase render # 出图 + MV + 烧字幕
产出
歌曲 + 歌词时间轴 + 分镜剧本 + MV 成片(带字幕)
边界
render 段复用已对齐的字幕,不重跑 whisper
短剧成片fxai-short-drama

一集短剧的自动化产线:分镜 → 出图 → 逐镜出片 → 合并 → 烧台词。最重、最贵的一条。

触发
做一集短剧自动生成短剧把分镜拍出来
命令
python drama_pipeline.py --check # ComfyUI 在线 + 模板存在 python drama_pipeline.py --lines-data shots.json --single-shot 1 # 只重第 1 镜 python drama_pipeline.py --burn --merged <合并成片.mp4> --lyrics <台词.txt> [--karaoke]
产出
单集成片(可带卡拉OK字幕)
边界
不写剧本(→ fxai-short-drama-script);角色形象先建档(→ fxai-fourview-gen)

三个叠字工具 + 一个剪辑(能套任何视频)

这四个不假设项目结构,给个 mp4 就能用。做数字人、做 MV、做客户给的片子,都能直接调。

歌词 / 视频字幕fxai-lyric-subtitle

whisper 提时间戳 → 校正歌词文字 → 生成 SRT/ASS → 用带 libass 的 ffmpeg 烧录。全程本地,不上传。

触发
给视频加字幕歌词字幕卡拉OK 字幕字幕烧录
命令
$PY scripts/gen_lyric_subtitle.py --video "<视频.mp4>" \ --lyrics "<歌词.txt>" --out-dir "<输出目录>" --out-name song_multiref [--no-burn]
边界
只做「底部跟语音走的字幕」,不做标题卡、不做贴片
标题卡fxai-title-card

画面顶部按时间段压上去的文字层。跟节拍走,不跟语音走。

触发
叠标题顶部加文字加章节标题
命令
python scripts/make_timeline.py --audio-dir <音频目录> --cards cards.json --out timeline.json python scripts/gen_cards.py --timeline timeline.json --size 768x1280 --out <titles> python scripts/title_card.py --video in.mp4 --timeline timeline.json --out out.mp4
关键
时间码用真实音频时长累加,不要按总时长平摊
边界
可选步骤。纯情绪、界面录屏、客户要干净画面 → 不叠(数字人走 --no-titles)
信息贴片fxai-infocard

半透明形状贴片:卡片、气泡、胶囊、便签、绶带。八套主题,本地画 PNG → 一次性 overlay,不逐帧编辑。

触发
加信息贴片加个气泡做个名词解释卡画面太空了
命令
python make_infocards.py # 按 infocards.json 画透明 PNG python overlay_infocards.py # ffmpeg 一次性叠到视频上
八套主题
dark light brand tech neon fresh sunset mono——按视频调性挑,不要全用 dark
形状
bubble / card / pill / note / ribbon / tag / round / cloud。气泡可加尾巴(triangle/bent),任意形状可加箭头(curve/straight)
边界
贴片是另外写的辅助内容(说明、名词解释、操作提示),不是从口播里提炼关键词
自动剪辑fxai-video-editing

长视频自动剪成精华合集并烧字幕。按内容重要性 / 音频能量 / 场景边界挑段,交叉溶解拼接。

触发
自动剪视频剪精彩片段做精华合集挑重要片段
命令
python build_highlight.py --video "<长视频.mp4>" --out highlight.mp4
产出
精简版 mp4(章节标题 + 歌词双轨字幕)
边界
全程本地,不上传;只挑段拼接,不重绘画面
音频驱动视频fxai-audio-video

公共件。一段音频 + 参考图 + 提示词,按 H3 三模式出视频。MV 和数字人口播都跑在它上面。

触发
用音频生成视频逐段音频逐段出视频多段视频拼接
三模式
single 单场景  ·  multi 多场景  ·  multiref 多参考(人物绑定最稳)
命令
python audio_video.py # 分段公式见 references/02-分段与参数.md
边界
不写提示词(→ fxai-h3-video-prompt);不提交任务(→ fxai-workflow)
第五摊 · 基础设施5 个

这一摊平时不直接叫,但前面四摊全踩在它上面。出问题时第一个要查的就是这里。

技能干什么什么时候直接用它
fxai-workflow
ComfyUI 客户端公共层
工作流 JSON + comfy_client.py。提交、下载、占位符注入、探活,全在这。 查服务端铁律、换服务器、改工作流节点
fxai-comfyui-watcher
进度监听
订阅 fxai:progress / fxai:task_saved 事件,按 prompt_id 路由。取代反复 sleep 轮询。 提交任何 GPU 任务后等结果。命令:comfy_watch.py
fxai-xiangongyun-deploy
仙宫云部署
一键装机:探活、装节点、下模型、开机关机。换脸服务的机器就在这。 新开实例、环境装坏、要重装
fxai-onethingai-deploy
OneThingAI 部署
同上,另一个云平台。deploy.py plan / run / probe 用 OneThingAI 的机器时
fxai-auto-update
技能包更新
拉官网版本号 → 下整包 → 逐文件落盘。本地改过的文件不覆盖,进三方合并队列。 update.py check / update / tasks / rollback
两个部署技能的区别:只是云平台不同,流程一样——probe 体检 → plan 看要装什么多大 → run 开装。 --no-models 只装节点,--no-nodes 只下模型,排障时分开跑最快。
第六摊 · 规范与复盘2 个
底层公共件fxai-common

这不是技能,是公共目录,没有可触发的能力。提供地址规范化、代理绕过、统一 HTTP 出口、口播文案校验。

谁在用
workflow / voiceover / comfyui-watcher / audio-video / digital-human-video / voiceover-script 自动 import
你要做的
什么都不用做。它坏了,上面六个全坏
内容复盘fxai-content-review

对一条已发布或已写好的内容做诊断,结论按岗位领域结构化入库,下次能查到。

触发
复盘一下这篇这条为什么不火记一笔经验
命令
python db.py add --领域 文章 --分类 钩子 --关键词 开头利益 \ --结论 "…" --证据 "…" --动作 "…" python db.py list / search / stats
边界
不改内容本身,只出诊断和入库

07四条端到端流水线

不想自己拼技能的时候,照这四条顺序走。每条都是「上一道的产物就是下一道的输入」。

A · 一篇公众号图文

  1. 选题 + 写稿 产出 正文.md。想不出写什么就先聊,别硬凑。
  2. 排版 把 md 排成 article/news.html。章节标题、正文、金句框、图注都有固定样式。别叫「正文.html」,会被安全策略锁读。
  3. 画封面 make_cover.py --title "A|B" --motif cloud → 1152×512。先写到非 image 目录再用 ASCII 名 cp 过来。
  4. 导正文图 export_figures.py --dir image → 宽 1152 的发布版 JPEG。HTML 里 src 写绝对路径。
  5. 建草稿 wx_api.py draft-add。到这一步就该打开手机预览了。
  6. 发布 只有你说了「发布」才走 publish。

B · 一条数字人口播视频

  1. 写口播稿 fxai-voiceover-script → 口播文案_标签.md。人称用「我」。
  2. 配音 fxai-voiceover 按标签逐段念,拿回分段 wav。
  3. 跑产线 dh_pipeline.py --project --script,走 S0→S3。
  4. 场景图拷回本地 S1.5 这步不能省,图只留在服务端缓存 = 没交付。
  5. 收尾 finalize.py 叠标题卡 + 封面 → check_delivery.py 全绿。
  6. 交付 成片_最终_{W}x{H}.mp4。

C · 一支 MV

  1. 写歌 fxai-yue2,风格 + 带 [Verse]/[Chorus] 标签的歌词。
  2. 第一段 produce_song.py --phase music:出歌 + 歌词对齐 + 分镜草稿。
  3. 人工改写分镜 这是故意留的口子。逐条改 分镜剧本.md,别直接进下一步。
  4. 第二段 --phase render:出图 + 出片 + 烧字幕。字幕复用,不重跑 whisper。

D · 一集短剧

  1. 剧本 + 分镜 fxai-short-drama-script,打斗镜先找 fxai-combat-design 取招式术语。
  2. 角色建档 fxai-fourview-gen 出三视图,喂给多参考模式,脸才不飘。
  3. 自检 drama_pipeline.py --check,确认 ComfyUI 在线、模板在。
  4. 出片 逐镜出片 → 合并 → --burn 烧台词。
  5. 叠字 需要就加标题卡 / 信息贴片;不需要就跳过。
单点用完全没问题。四条流水线只是「已经验证过的顺序」,不是强制流程。 你只想给一个现成视频加字幕,直接跳 fxai-lyric-subtitle,不用从头走。
B / C / D 三条出片后发现某一镜不对?别整片重跑,看下一节:只重做那一镜。

08某个镜头做坏了,只重做那一镜

数字人 / 短剧 / MV 走同一套返修机制;幻灯口播是本地渲染,单段整片都随便。

先分清手里这条视频是哪一类——两类出片方式不同,返修策略正好相反。

类别产线怎么出片返修策略
服务端生成 数字人 / 短剧 / MV H3 按 9.4 秒切段渲染,其余段命中服务端缓存 必须单镜返修
整片重跑约 7 倍时间
本地渲染 幻灯口播 HTML 精确画图 + 配音 + 拼接,纯 CPU,几分钟 单段、整片都行,反正都快

A · 数字人 / 短剧 / MV:单镜返修是唯一正解

这三条是同一套机制,判据和定位都在 fxai-common/rework.py,别在某个技能里另写一套——两边判据迟早走岔。

产线单镜入口起点产物
数字人 refix.py --shot 7 1 起 服务端自动合并,直接是完整成片
短剧 drama_pipeline.py --single-shot 7 1 起 merged 通常是完整成片;被拆成独立段文件才需拼回
MV produce_song.py --mv-segment=6 0 起 只是那一段裸片,必须拼回

上表是简化写法。完整命令还要带项目 / 分镜表参数:

refix.py --project <项目> --shot 7 drama_pipeline.py --lines-data shots.json --single-shot 7
只有 MV 的段号是 0 起,数字人和短剧都是 1 起。差这一位,会重渲错的那一镜——而且渲染成功、日志全绿,你要等成片出来才发现修错了地方。拿不准就用 rework.shot_no_of(秒数) 让程序给号,别自己数。

先确定是第几镜

  1. 从秒数倒推 用户说「第 42 秒人物侧脸不对」,rework.shot_no_of(42) 直接给镜号。
  2. 看改动了哪几镜 改完分镜表不确定影响范围,rework.changed_shots(项目, 分镜表) 对比上次渲染签名,返回清单。
  3. 要命令,不要自己拼 rework.refix_command(项目, [7]) 返回该跑的那条命令,省得手抄参数。

多镜一起返修,一次提交

三段都有问题就一次交三段,别分三回手动跑:

python ../fxai-common/rework_batch.py --shots 3,7,9 \ --cmd-template 'python drama_pipeline.py --single-shot {shot}'

模板里的 {shot} 是 1 起镜号,{seg} 是 0 起段号,{pos} 是本次第几个——按各技能的基准选,别混用。只看计划不跑加 --plan-only,只验命令拼得对不对加 --dry-run。

断了之后:从第 N 镜跑到结尾

跑到一半断了——超时、断网、关机、进程被掐——不用从头再来。给一个起始镜号,结束索引写 -1,后面所有段一次跑完。

先让程序告诉你断在哪,别自己数文件:

python scripts/comfy_watch.py shots <prompt_id> --dir <保存目录> --total <总镜数>

它会打「已生成 N 镜 / 缺失第 X 镜 / 下一镜 第 N 镜 / 续跑参数 start_index=N」。要机器读加 --json,拿 next_index(0 起索引)和 next_shot(1 起镜号)。

拿到起始索引后,按产线投一次区间任务(下面以「从第 7 镜跑到结尾」为例):

产线区间续跑说明
数字人 --start-index 6 --end-index -1 CLI 直接支持,其余参数照原命令
短剧 build_workflow(shots, start_index=6) CLI 只开了 --single-shot,区间走这个函数
MV gen_mv(..., start_index=6, end_index=-1) CLI 只开了 --mv-segment,区间走这个函数
(0, -1) 和 (N, -1) 是两件事。前者是整片重做,连角色四视图都重跑;后者是从第 N+1 段续跑,前面的段命中缓存不动。 is_rework() 的判据就是「不是 (0, -1) 就算返修」,所以起始写 6 才会真的只渲后半段——写成 0 就又变成整片重跑了。

区间提交还是逐镜串行?看缺的镜连不连续:

幻灯口播没有这套机制:它是本地渲染,断了直接整片重录,几分钟的事,不用算索引。

三条铁律:违反任一条,成片里就有旧段

  1. 必须串行 服务端每渲完一段,都会拿其它段的缓存拼一条完整成片回来。并行提交 → 互相覆盖对方刚生成的段。
  2. 只认最后一段渲完那次 中途几次返回的成片都是半成品,别拿去发。
  3. 全部渲完才准收尾 字幕、封面、标题卡、交付自检都排在最后一段之后。提前做等于白做。

怎么确认「真在返修」,而不是被跳过

看日志。这两行出现才算数:

[rework] 返修模式:只重渲第 N 段 [rework] 只改了第 N 镜 → 自动降级为单镜返修(整片不重跑)

没有这两行,说明参数被「已有产物 → 跳过」吃掉了——命令跑完、退出码 0、成片一个字节没变。数字人真出过这事:10 镜里只有第 7 镜侧脸不对,本该只重渲 9.42 秒,结果整片 88 秒重跑了 70 分钟。

成本差多少:整片 88 秒约 70 分钟,单镜 9.4 秒约 8~10 分钟。
整片模式 (0, -1) 只留给「分镜整体重来」——换了角色、改了画风、全片重排这类。

两个容易踩的细节

B · 幻灯口播:不用纠结,单段整片都行

它不走服务端视频生成,是 HTML 精确画图 + 配音 + ffmpeg 拼接,纯 CPU、不吃 GPU、几分钟出片。所以这里没有「9.4 秒一段」的概念,「一段 = 一图 = 一音频」天然可拆。

这条的判断标准跟上面相反。数字人 / 短剧 / MV 是「能单镜就别整片」,幻灯口播是「拆拼省不了多少,别为了省那几分钟硬拆」——它本来就快,整片重来反而是更稳的选择。

09视频里的四种字,别混

这四个东西看起来都是「往画面上加字」,但跟的东西不一样,做的人也不一样。

叫什么在哪跟什么走谁做
字幕底部语音,逐句fxai-lyric-subtitle
标题卡顶部节拍 / 时间段fxai-title-card
信息贴片画面任意位置讲解节奏fxai-infocard
封面片头 1.2s 静态帧不跟时间各产线的封面步骤

最容易搞错的是「信息贴片」。它不是从口播里提炼关键词,而是另外写的配合内容——名词解释、操作提示、注意事项、补充说明。半透明形状,不抢主体。

而且它是一次性 overlay:本地画好透明 PNG,ffmpeg 一把叠上去,不逐帧编辑视频。所以改贴片不用重渲染整条片子。

标题卡和信息贴片都是可选的。纯情绪片、界面录屏、客户要干净画面 → 两个都别叠。 数字人产线默认可以 --no-titles / --no-infocards。

1012 个真实的坑

全是踩过的,不是想象的。碰到奇怪失败先扫这一节。

#现象原因和解法
1往 image/ 存 封面.png 被拒中文名图片触发安全策略。用 ASCII 名:cover.png、fig1.png。封面先写到别处再 cp 过来
2上传公众号时图片全丢HTML 里 src 写了相对路径。脚本直接拼 cwd,必须写绝对路径
3上传脚本读不到正文文件叫了 正文.html,被安全策略锁读。改名 news.html
4TTS 报「缺参考文本」zero_shot 模式硬要求 prompt_text。用 whisper 转写参考音频拿原文,补到配置里
5whisper 跑完没输出没设 KMP_DUPLICATE_LIB_OK=TRUE。faster-whisper 的 libiomp5md.dll 重复初始化
6ffmpeg 报 Invalid argumentfade=...:alpha=1 放错位置。必须在 scale 之前,链固定为 format → fade → scale → overlay
7ffmpeg 编不完,一直转-loop 1 -i png 是无限流,必须配 -shortest
8overlay 的 x/y 不生效本机 ffmpeg 不支持嵌套 if()。缩放放 scale 里做,overlay 用自带的 overlay_w/overlay_h 居中
9PIL 文字上留白大、下挤压getbbox() 把抗锯齿边算进去了。要按 alpha>=220 的实心墨迹量中心
10PIL 文字上下移动方向反了Image.transform 是逆映射。要上移 dy,矩阵的 f 得写 -dy
11数字人交付了但少了标题卡dh_pipeline.py 产出的是中间片。必须再跑 finalize.py,交付物只有 成片_最终_*.mp4
12场景图在服务端有、项目里没有忘了 S1.5 拷回本地。只留在 fxai_cache 等于没交付

11附录 · 一页速查表

33 行,按六摊排。打印出来贴墙上也够用。

一 · 写作与脚本

技能一句话
fxai-voiceover-script原文/想法 → 带情感标签的口播稿
fxai-short-drama-script短剧剧本、分镜拆解、逐镜提示词导出
fxai-novel-writing短篇到长篇 + 标点规范 + 签约验收
fxai-weixin-gzh-publisher公众号全链路:稿 → 封面 → 图 → 草稿
fxai-combat-design打斗剧情、动作设计、招式术语、空间调度
fxai-h3-video-promptH3 视频提示词规范(三段式 / 六段式)

二 · 声音

技能一句话
fxai-voiceover文本转语音,双引擎多音色,逐段换情绪
fxai-yue2风格 + 歌词 → 一首中文歌
fxai-whisper-transcribe本地离线 STT,带时间戳
fxai-vocal-separate拆人声 / 伴奏,或只去噪

三 · 图像

技能一句话
fxai-comfyui-image-gen中文提示词文生图,角色库自有形象
fxai-scene-gen空场景 / 含人物场景图
fxai-fourview-gen角色四视图 / 三视图,人物一致性起点
fxai-poster海报封面,web / image / hybrid 三模式
fxai-role-management角色库增删改查,客户端即时可见
fxai-face-edit换脸、唇形同步、老照片修复、去背景
fxai-image-to-jpeg转最高质量 JPEG,可按体积压

四 · 视频

技能一句话
fxai-digital-human-video数字人口播成片,六步到 成片_最终
fxai-slide-video幻灯片口播视频,纯 CPU
fxai-mv-pipeline音乐 → 图 → MV,强制分两段
fxai-short-drama短剧成片自动化,逐镜出片再合并
fxai-audio-video音频驱动视频公共件,三模式
fxai-lyric-subtitle字幕烧录,跟语音逐句
fxai-title-card顶部标题卡,跟节拍
fxai-infocard信息贴片,八套主题,一次性 overlay
fxai-video-editing长视频自动剪精华 + 烧字幕

五 · 基础设施

技能一句话
fxai-workflowComfyUI 客户端公共层,服务端铁律在这
fxai-comfyui-watcher进度广播监听,取代 sleep 轮询
fxai-xiangongyun-deploy仙宫云一键装机
fxai-onethingai-deployOneThingAI 一键装机
fxai-auto-update技能包更新,本地改动进三方合并

六 · 规范与复盘

技能一句话
fxai-common底层公共件(不是技能),被六个技能自动 import
fxai-content-review内容复盘诊断,结论按领域入库