소스 정보
- 저장소
- chillzhuang/Kinema
- 최근 소스 활동
- 2026년 9월 3일 13:36
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 20
- 포크
- 7
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/chillzhuang/Kinema --skill kinema-project명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
| name | kinema-project |
| description | 管理多集或系列内容的项目、章节、角色、道具、场景与总体设计。用户要先规划再制作、创建系列、继续既有章节或查看项目状态时使用。 |
| metadata | {"kinema-managed-by":"agent/manifest.json","kinema-kind":"project","kinema-status":"stable","kinema-version":"2.0.0","kinema-owner":"Kinema","kinema-source":"workspace","kinema-trust":"first-party","kinema-digest":"sha256:242c0e45ba7102883f77d560fca0d3336a645da63f51934fef6372f2f244327a"} |
把"零散的一条条视频"升级为"项目(系列) → 章节(视频) → 角色/总体设计"的强规划结构。 每个实体是一个 JSON 文件(工作区 = 轻量数据库),可 CRUD、可随时进入某项目继续开发, 可用 studio 大屏查看全貌。适合系列剧、多集故事、IP 化内容、需要角色一致与世界观的题材。
所有生成产物一律落在仓库根项目库 project/<项目id>/ 内;未指定项目时默认用
project/demo 工程。绝不把文件写到 /tmp、仓库根本身、engine/project/ 或其他随意
位置污染文件系统。 工作区数据根默认是仓库根 project/(可用 --workspace /
KINEMA_WORKSPACE 覆盖;传仓库根或 engine/ 时引擎归一到仓库根 project/)。local
与 mysql 只切换持久化后端,不能改变工作区路径。
project/<项目id>/ 项目库;默认工程为 project/demo
├── project.json 系列元数据:总体设计 + 角色(含服装/发型/武器) + 道具 + 固定场景 + 章节索引
├── assets/refs/ ★设定集:角色设定图(三区两视) / 场景设定图 / 道具·武器设定图
├── assets/voices/ 音色锚定参考音频(如用)
├── chapters/chXX.json 章节=一条视频(继承项目 profile/音色/设定集,待填 script/shots)
└── chapters/chXX_work/ 渲染产物(图/配音/字幕/音乐/成片)
关键:章节自动继承项目 —— 新建章节会带上项目的 profile、角色音色表、角色设定块、色板、seed, 以及设定集(角色/场景/道具设定图路径),所以全系列画风/角色/场景/声音天然一致,不用每集重填。
★设定集(强要求·一致性根基):character add --outfit/--hair/--weapon + prop add + scene add(取景地)+
project set --scene(全局固定场景)
后跑 project refs <项目> 生成角色/场景/道具设定图;之后每镜强制参考这些图,跨镜跨集统一。
只有用户明说"跳过设定集"才 project set --skip-design(退回首镜锚定)。详见 base skill kinema 铁律2。
cd engine
python3 -m kinema project new --title "旅人与灯塔" --id lanterns --profile hd2d --theme "寻找与归途"
python3 -m kinema project set lanterns --logline "..." --world "..." --tone "..." --palette "..."
先想清楚:一句话故事、世界观、基调、色板、目标平台、用哪个风格档(profile)。
目标平台明确时优先用平台规格模板(--template,风格/比例/渲染模式/单集规格一键落位,
之后 spec check 即交付验收线;模板在 config/templates.yaml 可增删改):
python3 -m kinema template list # 抖音漫剧/快手星芒/B站中视频…
python3 -m kinema project new --title "旅人与灯塔" --id lanterns --template douyin_manju --theme "寻找与归途"
设定图只是文字设定的渲染结果——文字写不细,图就抽卡;文字不更新,第 30 章的他还穿着
第 1 章的衣服。所以设定分两步:add 建档、set 随剧情实时更新。
python3 -m kinema character add lanterns --name 洛 --voice-prompt "十六岁少年,清亮,语速快" --role 主角 --appearance "蓝斗篷棕发年轻剑士"
python3 -m kinema character set lanterns --name 洛 --speech-style "短句,从不解释第二遍" \
--personality "谨慎,先算退路" --arc "求生→求真" --taboo "绝不先动手" --add-keyword "小疤"
python3 -m kinema character show lanterns --name 洛 # 文字设定卡(省 token 的读法)
python3 -m kinema prop set lanterns --name 断剑 --desc "剑身齐中断裂,缠了布条"
python3 -m kinema scene set lanterns --name 钟楼 --add-keyword 钟塔
角色的文字设定字段全表(都是「你填」,engine 只读不改):
| 字段 | CLI | 干什么用 | 落到哪 |
|---|---|---|---|
appearance/outfit/hair/weapon | --appearance/--outfit/--hair/--weapon | 长相与装束 | 角色设定图提示词(三区两视铁律) |
role | --role | 定位(主角/反派/NPC) | 规划与人审 |
voice_prompt | --voice-prompt | 声线描述(年龄段/性别/音区/语速/气质,30 字内,不写情绪词);add 建档即定制立档,set 重写即重新定制(旧声烧过的 native 片段置 retake) | 全系列配音与 native 音色锚定;voice 是引擎回填的档案引用(显式模版 --voice <别名> 直填、不建档案) |
keywords | --keyword/--add-keyword | 别名/绰号/尊称 | 正文实体命中统计(不登记就统计不到,会被误报「很久没出场」) |
speech_style | --speech-style | 怎么说话(句长/口头禅/称呼) | 写台词与写小说正文的人设门盲测判据 |
personality | --personality | 性格内核(压力下怎么选) | 人设门「像不像他」 |
arc | --arc | 人物弧光(起点→当前→终点) | 转变发生后立刻更新,否则 AI 按第 1 章的他写第 50 章 |
taboo_lines | --taboo/--add-taboo | 绝不说/绝不做的清单 | 人设门硬判据,命中即打回(管文字行为) |
silhouette_notes | --silhouette | 剪影辨识度要点 | 进角色设定图提示词(跨镜一致性强锚点) |
constraints | --constraint/--add-constraint | 画面硬禁忌 | 编译进 negative_prompt,永不进设定图(会顶撞三区两视铁律) |
required_emotions/actions/views | --emotion/--action/--view | 全系列要演到的情绪/动作/视角 | 设定图取景与一致性判据 |
道具 desc/kind/keywords、场景 desc/keywords 同理(prop set/scene set)。
列表字段统一口径:--x 整体替换 · --add-x 并集追加 · 都不给=不动这个字段。
三条纪律:
project.json 里的 characters[]/props[]/scenes[]——set 系命令走
Series.commit()(进程锁 + 进锁后重载磁盘);手改会被引擎长任务的旧内存副本整份覆写、
mysql 模式下还会被较新的库行在加载前盖掉,且不报任何错。sheet/ref_image/audition 这些引擎回填字段不在 set 白名单里(会报错)——换图
走 project refs --force / refine / 版本回滚那套版本栈,换音色走 character set --voice-prompt
(重新定制)或 voice use(换档案/模版)。--sync(或下次
project refs 收尾自动同步)。required_*/silhouette_notes/constraints 与文字人设
四件都是系列级常量(写全系列的事,不是本集的),按集填会被下次同步冲掉。角色音色与旁白缺省定制:角色 character add --voice-prompt "<声线描述>" 建档即立档,
旁白 voice custom <项目> --narrator --prompt "<声线描述>" --adopt 1;真发前 tts/gen-video
逐个点名未选角的说话人。试音只属于模版路(显式例外):voice audition <项目> --name 角色 / --narrator
→ 试听后 voice use ... --no 编号(Studio 项目页选角卡点「用这条」)。
选过的每一把留一条音色档案:voice bank 看谱系、voice use --cast vc_NNNN 换回。
设定图同理可多候选:project refs <项目> --candidates 3 → 项目页宫格点选定稿。
上面任一“Studio 项目页点选”动作,先执行 base skill 的 Studio 交互交接协议, 自动确认控制台已运行并把项目/章节入口交给用户;不要只给一条启动命令后就停下。
要一章章写原创小说(不是改编既有全本)→ 走
kinema-novel:卷纲novel arc、 每章五步闭环、十章一批次的六门复核与《批次报告》都在那本 skill 里。
python3 -m kinema chapter new lanterns --title "相遇" # 生成 ch01.json(已继承)
# 你(Skill)把该章节当一条视频来做:填 script + shots(各镜 speaker 用角色名)
python3 -m kinema run --chapter lanterns/ch01 --mock # 先离线看
python3 -m kinema run --chapter lanterns/ch01 --native # 真实图生视频(缺省全能参考·一镜一片)
每个章节就是一条视频,用对应 genre skill(如 kn-game)的分镜方法来写 script/shots。
何时用:用户提供了完整小说/剧本,要按原著忠实改编成多集漫剧(IP 改编)。 不用则走上面「建章节 → 填脚本」的原创路径。
Python + AI 两段式:
adapt 承接 · 零 LLM · 确定性):正文落盘、结构预切分、幂等建章、实体合并。七步工法(每步落盘 · 逐门停下确认):
贯穿全程的一条:文字先行 · 图片留空(kinema 铁律9)。改编是整本书的量级, 设定图十几到几十张、分镜图动辄几百镜——第 1~6 步一张图都不生成,全部产出都是文字 (设定单文字字段 /
episodes[]/outline/shots[]含提示词)。第 7 步出《出图就绪表》 交给用户,用户下令才开始烧图。--mock同样别跑(占位图会填满sheet/image, 之后分不清哪些是真出过的)。
入库(两条路径任选,都落 source/raw.txt + source/segments.json(剧本按场景 / 小说按章标切分)+ source 指针块):
adapt import <项目> --file 小说.txt [--kind auto|novel|screenplay]——用户把小说/剧本文件路径给你即可。
支持 .txt/.epub/.fountain/.fdx:EPUB 纯 stdlib 解析(zipfile+xml.etree+html.parser 抽正文,
章标题取自 EPUB 自带 nav/NCX 目录,比 txt 章标正则更可靠;加密含 DRM 的 EPUB 拒收,MOBI/AZW3 需先用 Calibre 转 EPUB/TXT)
。adapt show <项目> 读回 source/切分数据再继续。建改编项目时主动问一句「有完整小说/剧本要导入吗?给我文件路径,或到网页改编区上传」;入库后读
source/raw.txt+source/segments.json再进第 2 步。 (编码自动识别转 UTF-8:UTF-8 / GBK-GB18030 / Big5-繁体 / 带或不带 BOM 的 UTF-16 都按「中文多、 乱码少」打分择优自动转码落盘,无需用户手动转码。乱码闸兜底:只有加密/二进制/未知编码——自动转码后仍有 >25% 乱码或控制符——才拒收报错提示「确认是纯文本或另存为 UTF-8」 ,正常中文一律 0 不误伤。) 剧本工作台阅读器(Studio 剧本页):左章节目录树 + 右正文按段懒加载(点哪章载哪章,超长书不撑爆, 无 200 万字上限),配 ⧉ 拆书指令 / ⧉ 问书指令 / 划词抽实体 / ⇄ 集级对照——都走「指令台:写下需求→与带定位坐标的标准指令合并→复制给 Claude Code」 范式(引擎无 LLM)。
拆书(你):分窗 Read source/raw.txt(借 segments.json 的章 / 场锚点定位原文段),提炼主线 / 贯穿冲突 / 爽点 / 世界观宪法,直接编辑 project.json 写 adaptation 块。
抽设定(你):抽角色 / 道具 / 场景 → character add / prop add --keyword / scene add --keyword(把同义措辞尽量塞进 keywords 兜底命中)
。
⚠ 分级铁律:一个「地方」一律走 scene add,绝不能登记成道具。道具设定图是结构三视物件版式(上部约 2/3 为正/侧/背三视等高等大并列,下部约 1/3 为一排三个局部细节框,无色板,纯色浅灰底)
,对「一个地方」根本不成立——「孢子宫殿」会被画成蘑菇战锤、「原始孢子森林」画成防毒面具与齿轮球;
scene add 走环境 key art 版式(广角建立镜头/无人物/前中远三层景物)且比例跟随项目而非 1:1。
判据:能被人拿起来/穿戴/挥动的是道具,人走进去的是场景(塔、大厅、塔顶、街道、森林、商场、
走廊、直播间…全是场景)。
场景描述要写成「一个地方」——别在 desc 里写主体名词(人/人形/某某人),模型会抓着那个名词去造物件(「几只孢子人在车缝间游荡」
→ 直接渲出一个孢子人形)。
疑似同一实体(别名 / 重名)一律停下问用户、不自动合并(错挂 > 漏挂);,背景陈设不登记(省设定图成本)。
铁律:
adapt merge-entities <项目> --file 候选.json(合并不覆盖 ·
保人工 voice/keywords/comments · keywords 取并集),或先读现有实体再增量改;绝不整体重写 characters[]/props[](会抹掉用户手调)
。outline 是 episodes[] 的派生缓存:要改某集大纲,改 episodes[] 再 adapt scaffold 重刷,
不要手改章节 outline(会被下次 scaffold 覆盖)。何时用:拆书 / 分集后(或用户在 Studio 剧本工作台「图谱」Tab 点「⧉ 图谱指令」时),把散在原文里的人物关系与世界观法则结构化成节点 + 连线,
供导演一眼看清全局、也作跨集一致性宪法。与 adaptation/episodes 平级,引擎不消费,纯规划与可视化。
工法(你 = Claude):Read source/raw.txt(借 segments.json 定位),梳理主要角色 / 阵营 / 地点 / 世界观法则及其关联,
产出图谱 JSON 后 adapt graph <项目> --file 图谱.json 落库 → 用户在剧本工作台「图谱」Tab 看可视化关系网 + 下方核心知识点缩写。
图谱 JSON 契约(与 docs/kinema/project.schema.json 的 graph 块对齐):
{
"summary": "少年林深自青云宗崛起,与魔渊墨渊结下贯穿全书的正邪之仇。",
"nodes": [
{"id": "linshen", "name": "林深", "type": "character", "role": "主角", "faction": "青云宗", "desc": "天才少年剑修"},
{"id": "qingyun", "name": "青云宗", "type": "faction", "desc": "正道领袖门派"},
{"id": "tiandao", "name": "天道轮回"
type 五类:character(角色)/ faction(阵营)/ location(地点)/ item(器物)
/ worldview(世界观法则)——驱动前端配色与图例。kind 八类:kin 亲缘 / ally 盟友 / mentor 师承 / hostile 敌对 / love 情感 / member 归属 / rival 竞争 / neutral 关联(缺省)
——驱动连线配色;relation 是自由文案标签,directed:true 画箭头(如师父→徒弟)。name 命中已建设定图的角色/道具时,前端自动挂上该设定图缩略图,点节点即开富灯箱(可重生成 / 点评,
与 ch01 资产同制度)——所以图谱里角色 name 尽量与设定集 characters[].name 一致。铁律:
adapt graph 每次用完整快照覆盖 graph 块(图谱无人工子字段,重新分析产出整份才自洽)
。边端点必须指向已存在节点 id——引擎校验悬空边直接拒收。characters[] 逐条(关系是全局视图,不是角色属性)。何时用:用户说「我要做成 XX 那样的」并给了一支本地参考片(自己下载的对标视频、竞品、往期作品)。 读片的目的是量出节奏骨架(多久一刀、每镜多长、留白多少)来定我们这条片子的镜数、镜长与 motion 模式, 不是照着它的画面复刻。不给参考片则跳过——原创路径本来就完整。
Python + AI 两段式(与 3.5 剧本改编同范式):
study 承接 · 零 LLM · 确定性):拷进工作区 → ffmpeg 量切点/静音 → 等间隔抽帧 → 落 digest.json。references/shot-analysis.md——读片顺序、切点复核(引擎的
已知误报/漏报源)、逐镜记录口径与证据纪律(只记帧里看得见的、声音侧只用静音区间
与外挂字幕、疑似/无法判定原样进结论)都在那份手册里;本节只管判定规则与铁律。python3 -m kinema study import <项目> --file 参考片.mp4 [--cuts 0.3] [--frames 24] [--subs 外挂.srt] [--title 备注名]
python3 -m kinema study show <项目> # 回看全部读片记录
python3 -m kinema study rm <项目> --slug <slug> # 读完即删(版权卫生)
产物落 project/<项目>/study/<slug>/:ref.mp4(副本)+ digest.json(切点全表 / 逐镜清单 / 静音区间 / 抽帧索引)+
frames/(等间隔关键帧,上限 48 张)+ 可选 subs.srt。
project.json 的 study[] 只留指针 + 计数,要看全表自己 Read digest.json。
v1 只吃本地文件,不吃 URL、不下载——引擎核心不联网抓第三方内容;用户要读某个链接的片子,请他自己下载后给本地路径。
引擎交给你的可测量量(rhythm 块):
| 量 | 含义 | 你拿它干什么 |
|---|---|---|
cuts_per_min | 切点密度(刀/分钟) | 换算我们这条片子的镜数 = 密度 × 目标时长 |
avg_shot_sec / min / max | 每镜平均/最短/最长时长 | 定每镜 dur;max 特别长 = 对方有长镜头做呼吸 |
silence_ratio | 静音占比(null=无音轨,0=全程有声) | 高 = 靠画面与配乐叙事(少写旁白);低 = 旁白密集口播型 |
media.dur/fps/width/height | 容器元数据 | 核对比例与目标时长量级 |
判定规则(这一步归你,引擎不做)——由节奏骨架反推 motion 模式:
| 参考片节奏 | 判定 | 理由 |
|---|---|---|
avg_shot_sec ≤ 2 或 cuts_per_min ≥ 30 | kenburns | 快切蒙太奇每镜一闪而过,静图 + 运镜完全撑得住;这种节奏上 Seedance 是纯烧钱(镜多 × 每镜都要钱) |
2 < avg_shot_sec ≤ 5 且以角色说话为主(silence_ratio 低、有对白字幕) | dubbed | 镜长足够看清口型,对口型的收益最大化 |
avg_shot_sec > 5 的长镜 / 环境镜 / silence_ratio 高 | native 或 kenburns + 环境特效 | 长镜要真运动才不呆;预算紧就用 kenburns 慢推 + rain/snow/fog 环境特效兜住 |
先按上表出结论,再用镜数 × 单价当场算一笔账(单价取 models.yaml 里该视频别名的 price_per_second,缺省主力档 0.5 元/秒)报给用户;
真跑前照常 gen-video --dry-run 复核。结论必须写成一句人话交给用户确认,别默默按参考片抄。
反照抄铁律:读片产出必须列「保留什么 / 必须改什么」两栏,缺一栏不许进节点①。
| 保留(可借鉴的结构) | 必须改(不许沿用的内容) |
|---|---|
| 节奏骨架:镜数、每镜时长、切点密度、留白位置 | 具体画面构图与镜头内容——一律按本项目世界观/角色重写 |
| 信息结构:开场钩子在第几秒、转折点位置、结尾收束方式 | 台词原文、旁白措辞、金句——一个字都不许抄 |
| 声音节奏:旁白密度、静音留白比例、配乐进出点 | 音乐曲目、音效素材本体 |
| 情绪曲线:哪儿紧、哪儿松、高光落在哪 | 角色设定、造型、名字、专有名词 |
版权铁律(硬约束):
project moodboard)、不做首帧、不进 shots[].refs。exports/ 交付包与提案里不许出现参考片、其抽帧或字幕;deliver/export-* 只收我们自己的产物。study[] 里的路径一律工作区相对路径,oss sync 因此不会收录它(引擎已有守卫用例钉死)。任何时候都别手改成绝对路径。study rm <项目> --slug <slug> 清掉本地副本,digest.json 里的数要留就先自己拷走。python3 -m kinema project list # 所有项目
python3 -m kinema project show lanterns # 项目详情(设计/角色/章节及状态)
python3 -m kinema chapter list lanterns # 章节及渲染状态(draft/scripted/rendered)
python3 -m kinema chapter set lanterns ch01 --skill kn-anime --profile ghibli # 只改章节绑定(建章拷贝);--inherit 回落项目派生
python3 -m kinema spec check lanterns # 绑定模板后:逐章时长/分镜数/比例 + 系列体量达标核对
python3 -m kinema ledger lanterns # 成本台账:预估/实际双轨 + 废片/重roll 运营指标
python3 -m kinema export-pitch lanterns # 项目提案书(浏览器打印即 PDF)
python3 -m kinema project rm lanterns --archive # 归档
project rm 是逻辑删除:项目进入 Studio 回收站,目录与产物保留用于恢复。项目库根下仍能
看到该目录不代表章节跑到了外层;章节只允许位于 project/<项目id>/chapters/。
python3 -m kinema studio # 从 engine/ 启动也自动使用仓库根 project/
需要用户进入大屏时,必须先执行 Studio 交互交接协议;这里只保留命令入口,
不把“启动控制台”的责任推给用户。
"项目"标签页 = 项目仪表盘(每个项目→总体设计/角色预设/章节及成片,绑定模板的项目带平台规格达标卡与导出中心);
"看板"标签页 = 跨项目状态全景(五态看板支持拖拽表态 + 章节热力 + 烧钱/废片/重roll 运营统计);
"生意"标签页 = 成本台账(预估/实际双轨);章节页带时间线视图、
血缘画布(设定资产连线到引用它的分镜,hover 联动、过期红线)与交付卡
(一键导出审阅包/交付包);"成片"标签页 = 视频画廊;⌘K 全局素材检索(台词/提示词/角色跨项目定位);
灯箱内**✂ 框选局部改造**——设定图/分镜图框选一块区域输入指令即可让模型只改这一处。
project show <id> 看到进度,挑 draft 章节继续填脚本。分集(你):按原著章节一一对应:一章 = 一集 = 一个视频章节,绝不合并章节(小说有多少章,
episodes[] 就有多少集——多章压一集会把该章的关键情节、微反应与设定细节整段挤掉,改编质量塌在源头;
引擎在 adapt scaffold 时对「分集数 ≠ 源章节数」出声告警)。集号与原著章号一致、source_range 写「第N章」
;每集从本章正文内取材写「开场 3 秒钩子 + 核心事件 + 尾钩(留白不给答案 = 付费位)」,直接编辑 project.json 写 episodes[](字段 no/title/logline/open_hook/core_event/cool_point/end_hook/source_range/target_dur_s)
。单章体量撑不起一集时问用户而不是擅自合并(可加长该集时长或让用户点名例外)。→ 停下确认分集方案。
随时 adapt show <项目> 核对 source / 拆书 / 分集。
建章(Python · 幂等):adapt scaffold <项目> [--only 1,3,5]
→ 章号 == 集号(ch01…)、把每集大纲编译进章节 outline、回填 episodes[].chapter_id、回灌设定集。可重跑不炸(改了 episodes 重跑即刷新 outline)
。也可在 Studio 项目页「改编」区点「建本集 / 全部建集」。
拆镜(你):逐章照 chapter.outline 拆 shots[](用对应画风 skill 的分镜方法)。
image_prompt/image_prompt_en 照样写全写好——它们是文字资产,写进 JSON 零成本;
但到此为止,gen-image 不跑(shots[].image 空着是本档正常状态)。
出图就绪表(你)→ 停下等指令:文字全部落盘后,Read project.json 与各章节 json
逐项数(别估)出这张表交给用户,然后停:
| 批次 | 待出 | 依据字段 | 建议顺序 |
|---|---|---|---|
| 角色设定图 | N 张 | characters[].sheet 为空 | ① 先出,一致性根基 |
| 场景设定图 | K 张 | scenes[].sheet 为空 + 顶层 scene_ref | ① 与角色同批 |
| 道具设定图 | M 张 | props[].sheet 为空 | ② 按出场频次挑,冷门道具可缓 |
| 分镜图 | 逐章列 | shots[].image 为空 | ③ 设定图全部通过后,先首镜 |
乘 config/models.yaml 里该 profile 的 price_per_image 报出总价量级。
只有用户明确下令("出图"/"生成设定图"/"先把主角出了")才动手;没点范围时
默认只出设定图那一批,绝不顺手把几百镜分镜图一起烧掉。
SOC 직업 분류 기준