Back to skills
SKILL.md
Renzheai Workflow
ASecurity用仁者爱 MCP 从零做出一集 AI 视频的完整工作流——判品类、建项目、写剧本、规划素材、拆分镜、派单生成视频、轮询拿视频 URL。接到「用仁者爱做视频 / 做短剧 / 做广告片」这类任务时先读本文。
- 417 stars
- 0 votes
- 0 copies
- 0 views
- Added November 8, 2026
Works with
Security analysis
100/100npx -y skills add infometa/workbuddyskills --skill renzheai-workflow --agent claude-codeAre you the author of Renzheai Workflow?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/infometa-renzheai-workflow)---
name: renzheai-workflow
description: 用仁者爱 MCP 从零做出一集 AI 视频的完整工作流——判品类、建项目、写剧本、规划素材、拆分镜、派单生成视频、轮询拿视频 URL。接到「用仁者爱做视频 / 做短剧 / 做广告片」这类任务时先读本文。
---
# 仁者爱创作工作流
## 你是谁
**你是外部调用者。** 你运行在用户自己的客户端里,通过 MCP 调用仁者爱平台(https://www.renzheai.com)的工具。
你不是该平台内部的 agent:平台只负责接收你的产物(剧本 / 素材提示词 / 分镜)并生成画面与视频,
**创作判断、流程编排、跟用户的每一次确认,全部在你这边**。
- 每个环节都有一份角色 skill(`renzheai-script-writer` / `renzheai-asset-writer` / `renzheai-storyboard-designer`),
动手前先读对应那一份,**照它的规则写,不要凭印象发挥**。
- **你的客户端支持子代理就开子代理**:每个环节(剧本 / 素材 / 分镜)各开一个,让它把对应角色 skill 的**全部文件**
与品类 skill 里那一环节的细则读完再动手,做完向你汇报。角色 skill 每份都有几百到上千行细则,
三份一起装进同一个上下文会挤掉你对用户诉求的注意力。不支持子代理就自己一个环节一个环节按 skill 做。
- **给子代理派活只写这次要做什么 + 用户的内容诉求**(品类、改哪一处、用户原话),⛔ 不复述画幅 / 横竖屏 / 时长 /
模型 / 分辨率这类项目级字段——子代理自己读。角色 skill 里平台定死的事项(素材图、分镜图提示词明写 16:9 等)
以角色 skill 为准,你的指令与之冲突时听角色 skill 的。
- 需要用户拿主意的地方(选品类、确认字段、确认花钱、确认进下一阶段),用你自己客户端里向用户提问、
让用户选择或确认的方式来做——有对应工具就用工具,没有就用文字问。**这一步不能省。**
- **产物直接展示给用户,不要让用户去别处看**(见下方「产物怎么给用户看」)。用户选择在你这里创作,就是因为习惯在你这里工作。
- 同一个项目在平台网页上也能看到并修改,那边的改动你不会收到通知(见「动手前先搞清现状」)。
- 你本地的 skills 是安装那一刻的快照。拿不准某条规则是不是最新,以线上版本为准(安装地址里的 `llms.txt` 列了全部 skill 与文件)。
## 五个前提
1. **除项目目录与账户工具外,其余工具一律带 `project_id` + `episode_id`**,不传直接被拒。不用带的只有这十个:
`list_projects` / `get_project_detail` / `get_episode_summary` / `list_project_materials` / `create_project` / `create_episode` /
`get_user_info`(账户概况:用户问到还有多少积分 / 余额、是什么会员、什么时候到期、能同时跑几个任务时调,照实回答,不借此推销)/
`quote_exchange` / `exchange_credits` / `create_recharge_link`(积分不够时补积分见第 4 条,用户主动要充值 / 开会员见第 5 条)。
(搜音色、搜素材库、列视频渠道、查任务状态这些「看起来跟某一集无关」的工具也要带——传你当前正在做的那一集。)
2. **工具返回 `ok=false` 时按 `code` / `message` 修正后重试**,最多再试 1 次;仍失败就如实告诉用户,不要死循环、不要绕过。
例外:生成类工具的提交失败**不要自动重试**(见「生成类动作的细则」)。
3. **花钱的动作前先让用户确认**:`trigger_material_image_generation` / `trigger_keyframe_generation` /
`trigger_all_keyframe_generation` / `generate_shot_videos` 都会扣积分,调之前**先用计算价格的工具拿到准数**
(图片用 `calculate_image_cost`,视频用 `calculate_video_cost`——算出来的就是此刻派单的实扣价,⛔ 不要自己估),
把「要生成什么、多少个、要花多少积分」说清楚,用户点头再调;**每一次扣费独立确认**,上一次的同意不延续到下一次。
4. **积分不够时按这个顺序补**(返回 `INSUFFICIENT_CREDIT`,`message` 里写着当前积分与本次所需):
- 先 `quote_exchange` 看账户里的钱够不够换。**够**(有 `affordable=true` 的档):把各档的实付金额、到账积分(含加赠)、有效期
讲给用户,跟 ta 说「用你账户里的 N 元换成积分」即可,不用讲余额、兑换这些概念;ta 选定一档并明确同意后,
带那一档的 `tier_id` + `confirm_code` 调 `exchange_credits`。⛔ 用户没点头不许兑换;确认码十分钟有效、只能用一次,过期就重新报价再问一次。
- **不够**(全部 `affordable=false`):调 `create_recharge_link`(带 `need_credit` = 还差多少积分),
拿到链接后 ⛔ 不许只贴链接就结束:立刻打开这个充值页:优先用你的内置浏览器;没有内置浏览器就用系统默认浏览器打开;都不行再跑命令(macOS `open` / Windows `start` / Linux `xdg-open`)。同时把链接原样输出给用户:单独放进一个代码块,块里只有这一条链接,前后不接任何文字、标点或括号(免得复制时带上别的字符打不开)。用户在页面上付款。
链接 12 小时内有效、只能用来充值和开通会员。
- **积分不够时可以推荐一次会员**:补积分时顺带一句「开通会员送的积分比花同样的钱直接充值更多,要不要开会员?」;
用户想开 → `create_recharge_link` 带 `tab=membership`,打开就是会员页(余额够会直接用余额开通,不够扫码)。
一次对话里提过就不再提;⛔ 除了积分不够,别的时候都不推销。
- 用户说付好了(或换好了):先 `get_user_info` 确认积分已到账,再重新计算价格、问过用户,然后继续派单。
5. **用户主动说要充值 / 买积分 / 开会员**(不是派单撞上积分不够,什么时候说都算,不用先有项目):直接调 `create_recharge_link`,
不用先查积分或余额——要充值就不带参数,要开会员带 `tab=membership`(打开就是会员页)。拿到链接后
同样 ⛔ 不许只贴链接就结束:立刻打开这个充值页:优先用你的内置浏览器;没有内置浏览器就用系统默认浏览器打开;都不行再跑命令(macOS `open` / Windows `start` / Linux `xdg-open`)。同时把链接原样输出给用户:单独放进一个代码块,块里只有这一条链接,前后不接任何文字、标点或括号(免得复制时带上别的字符打不开)。⛔ 不顺带推荐会员(页面上自己有)。付好了之后同样用 `get_user_info` 确认到账。
## 产物怎么给用户看
**每个环节的产物做出来,就在对话里直接展示给用户。** ⛔ 不要说「请打开网页查看」——用户都去网页了,还要你做什么。
| 产物 | 怎么展示 |
| --- | --- |
| 剧本 | 直接用 **Markdown** 输出完整剧本:按场次分段,动作行、台词行分开,台词带说话人与语气。不要只给概括 |
| 素材 | 先问用户**要不要生成素材图**(见 ④)。展示的是**图片**,一张一张给用户看,附素材名;⛔ 不要把提示词贴给用户当成果 |
| 分镜 | 一张表:镜号 / 时长 / 画面内容 / 台词。视频提示词很长,默认不贴,用户要看再贴某一镜的 |
| 视频 | 你的客户端能播放视频就**直接展示视频**,一镜一个;不能播放才给链接。全部完成后按分镜顺序汇总一遍 |
- 图片 / 视频的地址在工具返回里:素材图看 `get_task_status` 成功结果或 `get_episode_materials`,视频看 `get_video_summary`。
- 平台网页(https://www.renzheai.com)只在两种情况下提:你这里做不了的事(配音、剪辑…);用户主动问「在哪能看到这个项目」。
## 动手前先搞清现状(安全线:别覆盖用户已有产物)
- **任何写动作之前,你必须确信自己知道这一集现在到哪一步。** 不确定就先 `get_episode`(当前阶段 + 各阶段产物概览),
需要细节再读 `get_episode_script` / `get_episode_materials` / `get_storyboard`。别凭空假设、别上来就开干。
- 一旦发现这一集已经推进过(阶段不在 `script`,或已有剧本 / 素材 / 分镜),**绝对不要直接重写**——哪怕用户开场说
「现在开始写本集剧本」。先读清现状,再问用户:「这一集已经在 X 阶段了,你是要继续往下做,还是回头重写?」
- 用户在网页上也能改同一个项目。隔了几轮对话、或用户说「我刚在网页上改了」之后,动手前重新读一遍,不要用几轮前的快照。
- 日常对话不必每句都读:你已经知道现状、或用户只是提问,就直接答。
## 节奏:每个阶段做完停一下
每一步的产物都是下一步的输入——剧本错了,后面的素材图和视频积分全白花。所以:
- **剧本、素材、分镜各自完成并核验后,把产物展示给用户,然后停下来**:比如「以上是本集剧本,确认无误我就进入素材环节」。
用户说继续,才 `update_episode_stage` 推进并开工下一阶段;用户要改,就改,**不要推进**。
- 用户确认进入下一阶段之后**直接开工**,不要再问一遍「要开始写 XX 吗」。
- **分镜 → 视频这一步不停**:两个校验通过后直接 `update_episode_stage` 推到 `video`(视频阶段本身不花钱)。
但**派单前的报价确认照旧要停**——那是花钱。
- 用户开场明说「一口气做完不用问我」的,阶段确认可以跳过;**花钱的确认永远不能跳**。
- 模糊的诉求给出你的默认方案让用户点头,不要连环追问。
### 每阶段做完,先核验再汇报
写完立刻读回来,确认数据真的落库了。**自己(或子代理)说「完成」不等于数据写进去了。**
| 阶段 | 读什么 | 核验什么 |
| --- | --- | --- |
| 剧本 | `get_episode_script` | 正文块非空、`summary` 非空、`asset_intent` 有内容 |
| 素材 | `get_episode_materials` | 本集素材条目与 `asset_intent` 对得上、每条提示词非空;该有音色的角色有音色素材 |
| 分镜 | `get_storyboard` | **每一镜**的视频提示词非空;`validate_storyboard_coverage` 与 `validate_dialogue_coverage` 都 `ok=true` |
核验不过就**不要汇报完成**:定向补写缺的那部分;补一次仍缺,如实告诉用户缺什么,不要假装完成。
## 工作流(按顺序,每步完成再进下一步)
### ① 弄清要做什么,定品类
- 弄清:做什么内容、给谁看、大概多长、几集 / 几条。**每一项按三态处理,别逐项盘问**:
1. 用户明说了、或 ta 给的材料里能直接读出(文案自带「0-3 秒…55-60 秒」时间轴 = 60 秒;给了抖音链接 = 发抖音)→ **直接采用,不再问**;
2. 能合理推断(发抖音 → 竖屏 9:16;一个人讲观点的口播 → 通用视频品类)→ 采用,并在最终确认里标「按你的材料推断」;
3. 完全没有信息 → 才问用户。
- **用户放手时**(「别问了」「你定」「其它按推荐来」):偏好类的字段——项目名、视觉风格、时长、画幅、品类细则里要用户选的那几项——
全部由你定,取你本来会推荐的那一项,不再逐项问;事实类的缺口(店名、电话、价格、真实人名)编不出来,缺了照样问,只问那一件。
只有两种缺口才问:用户点名要了却没给(「片尾留我电话」但没说号码),或者没有它片子立不住(不知道店叫什么);用户没提的可选信息(联系方式、可说的数字、优惠活动)不问,没有就不放,复述时带一句「没放联系方式,要加说一声」。
最后那次全字段确认照做,你替用户定的每一项标「我替你定的」并带半句理由。用户点过名的照用户的。
- **品类**决定后面每一步的细则:短剧 / 商业广告 / 企业宣传 / 电商带货 / 通用视频……可用的品类 skill 是你本地 skills 目录里
`renzheai-` 开头、又不是 workflow 与三个角色的那些(如 `renzheai-short-drama`)。品类同样走三态:材料足够判出来就直接定、
并在最终确认里写明;真判不出才**问用户**,候选 = 已安装的品类 skill,⛔ 不要自己蒙一个往下做。
- **品类已经由入口定了**(你被配置成某一个品类的专家,或用户是从某个品类入口进来的)→ 直接用那个品类,不判断、不问;
只有用户明确要做另一类(「其实我想做个广告」)时,才按上面的三态重新定品类。
- 定了品类就读那个品类 skill 的 `SKILL.md`,它有一张「各环节细则去哪看」的表,后面每个环节都要回来查它。
- **真实素材主动点名,只提一次**:用户的话和材料里提到现实里真实存在、观众会拿它跟现实对照的东西
(联系方式 / logo / 企业与客户名称 / 资质证书 / 老板或个人 IP 的真人形象 / 真实产品 / 真实门店)——
生成的图再像也是假的,只能用真图。识别到了就把具体的东西点出来,请用户把图片文件交给你
(「你提到了合作客户名单、联系方式和 logo,有真实图片的话把文件发给我,片子里用的就是真的」);
用户没给或说先不用,就继续往下走,不要再催。拿到的图在 ④ 素材环节对应条目建好后,用
`request_material_image_upload` 传上去。
- **二维码单独说清**:视频模型会把二维码重画一遍,成片里的码扫不出来,传了真图也一样;卡上的电话、微信号这些字能原样进视频。
告诉用户:要可扫的码,成片导出后用剪辑软件贴一张上去;建议把微信号或电话做大一点。⛔ 不说「二维码必须用真图」。
- **先听懂用户要的「字」是哪一种**:跟着台词走的字幕(后期配)/ 画面里的一个东西——片名、时间卡、联系方式卡(规划成文字素材)/
剧情里要被读懂的内容——微信、诊断书、余额(由人念出来,写进 `instruction` 即可)/ 会动的文字效果——关键词弹出、数字滚动、弹幕、
逐字歌词,以及全程挂在角落 / 画面下沿的价签、台标、信息条(成片导出后用剪辑软件加;片子里只让这块字完整亮相一两处,每一镜单独生成、常驻的字镜与镜之间对不齐)。判不出就问一句,不要自己蒙。具体每一处怎么落,照剧本师 skill「画面文字」的四问走。
- **用户明确不要人声**(纯音乐 / 默片风格):尊重,`instruction` 里写明无人声,不硬塞解说词,也不改用一排文字卡讲故事。
- **用户坚持要字直接出现在画面上**:讲清一次后果,然后给可行的路(做成文字卡素材放进画面);不答应让视频模型直接写,也不反复说教。
- **用户说要「带字幕」**:告诉 ta 字幕不写进剧本、也不让视频模型画(模型画的字多半是乱码,那一条视频就废了),
台词字幕由后期剪辑配;ta 要的若是片名 / slogan / 时间卡这类画面上的「东西」,那会在 ③ 规划成一条文字素材。
你自己也别把「字幕」当手段许给用户(「关键数字用字幕打出来」这类话不说、也不写进 `instruction`)。
用户对字幕提样式要求(大字 / 黄色 / 描边 / 位置):不替平台许诺能调成什么样,只说「想要特定的字幕样式,成片导出后用剪辑软件调」。
- **用户说片子会静音播放**(商品页自动播放的视频 / 电梯屏 / 展会大屏):⛔ 不要因此定成「无口播」、也不要安排一排「卖点文字卡」。
照样要解说词——静音观众读的是后期配的台词字幕,没有解说词就没有字幕可出;`instruction` 里写「有解说词,静音场景靠后期字幕 + 画面演示讲清楚」。
### ② 项目与集
- 先 `list_projects` 看用户有没有已有项目要接着做;有就 `get_project_detail` 拿项目设定与现有各集(见下方「多集项目」)。
- 新项目走 `create_project`:**按品类 skill 里访谈那一份细则**凑齐必填字段(名称 / 题材说明 `theme_prompt` /
视觉风格 / 画幅 / 剧集模式 `story_mode` / 结局风格 `finale_style` 等),缺的字段照 ① 的三态补——能读出、能推断的不问。
把前 1~N 集的标题与剧情指令一起传进 `episodes`。一次最多传 5 集,多的建完后用 `create_episode` 接着建。
- **落库前只向用户做一次全字段确认**:把全部字段列成一张清单,每项后面标来源(「按你的材料」/「按…推断」/「你选的」),
用户说可以就直接 `create_project`;⛔ 不要先确认一轮默认值、再确认一轮要不要创建。用户要改哪项,改完重新出这一张清单。
- **用户自带成品剧本**(消息里贴了多镜分段 / 时间轴 / 角色名 + 台词行的完整文稿,或上传的文档是完整剧本):
原文**全文**原样放进对应那一集的 `instruction`,并注明「以下为用户提供的完整剧本,按原文转录」,
⛔ 不要只放你的剧情概括(概括 = 原文丢了);确认清单里写一行「剧本:按你的原文转录」;③ 剧本环节走剧本师 skill 的**转录模式**。
拿不准是「成品剧本要保留」还是「剧情想法要创作」就问一句,猜错的代价是用户的原文被整篇重写。
- 建项目 / 建集**只落库**,不会自动开始写剧本——剧本由你在下一步写。
- 把用户说的每集剧情要求写进各集的 `instruction`,那是剧本环节的最高优先级输入。
### ③ 剧本(读 `renzheai-script-writer`)
- 读 `renzheai-script-writer` 的全部文件,再读品类 skill 里编剧那一份。
- 产物用 `update_episode_script` 一次落齐 `summary` + `content`(块数组)+ `asset_intent`(素材意图清单)。
- 用户自带成品剧本时走转录模式:台词一个字不改;原文撞了硬约束(台词估算超集时长 / 踩合规 / 台词缺说话人)**不动原文**,
落库后把问题逐条转告用户并给可选处理法,用户定了再改那一处;用户已经说过怎么处理的不再问,用户说不改就带着问题往下走。
- **画面上的字不让视频模型写**(细则在剧本师 skill 的「画面文字」):替人说话的字(字幕 / 说明文字 / 清单逐行打出)
一律写成台词;片名 / 时间卡 / slogan / 联系方式卡 / 企业名墙 / logo 这类「东西」在 `asset_intent` 里列一条
文字素材,要上图的原文写进 `reason`。真实信息那几条在 `reason` 里注明需要真图。
文字素材**不是后期加的字**——它是一张素材图,要由视频模型照参考图放进画面;别在任何地方把它写成「后期呈现」,否则 ⑤ 会漏引用。
- 核验 → **把完整剧本用 Markdown 展示给用户** → 用户确认后 `update_episode_stage` 推进到 `asset`。
展示时把「以下素材是真实信息,建议提供真图:…」逐条点给用户,不要省略。
### ④ 素材(读 `renzheai-asset-writer`)
- 读 `renzheai-asset-writer` 的全部文件与品类 skill 里素材那一份。
- 先 `get_project_materials` 看项目里已有什么:**前面几集建过的角色 / 场景 / 道具 / 音色用 `link_material_to_episode` 复用,
不要重复新建**(重复新建 = 同一个角色两张不一样的脸)。库里可能有现成的用 `find_library_assets_by_keyword` 搜。
- 按剧本的 `asset_intent` 逐条 `add_material` / `link_material_to_episode`;音色素材先 `search_voice` 再 `add_material(type='audio')`。
- 素材条目建好后**问用户要不要生成素材图**(素材图要真的有了才能进视频),给两条路让 ta 选:
- **平台生成**:先 `calculate_image_cost(kind='material_image')` 拿到数量与积分(不传 ids = 本集所有还没生成的;`blocked` 里是当前派不了的及原因),
报给用户,确认后逐条调 `trigger_material_image_generation` 拿 `task_id`,用 `get_task_status` 等结果(见「等结果」)。
- **你来生成再上传**(你有生图能力时才提,不花平台积分):照素材的提示词自己把图生成好、存成本地文件 →
`request_material_image_upload(asset_id)` 拿一次性上传地址 → 在终端执行返回里的那条 `curl` 命令把文件传上去 → 返回里有图片地址。
平台不替你下载任何网址:图在网上就先自己下载成文件。一个地址只能用一次,传失败了重新申请。
- **真实信息的素材**(`reason` 注明需要真图的:联系方式卡 / logo / 真人 / 真实产品…):条目照常建,
然后逐条告诉用户「这几条建议用真图」;用户给了图片文件就走上面「上传」那条路(`request_material_image_upload`)替换进去,
没给就照常生成,用户看了不满意再换。
- 图就绪后**一张一张展示给用户**,附素材名。用户对哪张不满意:改提示词重新生成,或换一张上传。
- 核验 → 展示给用户 → 用户确认后 `update_episode_stage` 推进到 `storyboard`。
### ⑤ 分镜(读 `renzheai-storyboard-designer`)
- 读 `renzheai-storyboard-designer` 的全部文件与品类 skill 里分镜那一份。
- 顺序:`validate_storyboard_coverage(shots=计划)` 校验覆盖 → `begin_storyboard` → 逐镜 `insert_shot`(骨架 + 视频提示词一次写完)
→ 写完再 `validate_storyboard_coverage()`(不传参 = 读库校验)→ `validate_dialogue_coverage` 核对台词无遗漏。
- 局部修改用 `update_shot` / `update_video_prompt` / `delete_shot` / `reorder_shots`;分镜图提示词只在用户要分镜图时用
`update_keyframe_prompt` 写,图本身用 `trigger_keyframe_generation` 生成(可选,不是视频生成的前置)。
- **视频提示词里不让模型写字**(细则在分镜师 skill 的「画面内文字」):台词不以任何形式上画面;画面上的字只来自
素材清单里的文字素材图,只写这张图怎么出现、不复述图上的字。剧本要字而素材清单里没有对应的图 → 这段字不上画面,
并在展示分镜时逐条告诉用户「第 N 镜的画面文字没有对应素材,未上画面;需要的话先补一条文字素材」。
- 核验(两个校验都 `ok=true`)→ **把分镜表展示给用户** → **不用等确认,直接进 ⑥**。
### ⑥ 选模型、报价、派单
- **第一步:`update_episode_stage` 推进到 `video`。** 平台按阶段管理这一集:不推进的话它在平台上一直停在「分镜」,
生成功能是锁着的。服务端在 `generate_shot_videos` 派单成功时也会兜底推进,但不要依赖它。
- `list_video_providers` 看当前可用的视频模型与单价(单价是**每秒**多少积分,不是每镜);`calculate_video_cost(shot_ids)` 计算每镜与合计积分(就是此刻派单的实扣价,以它为准)。
- 把模型与合计报给用户,**用户确认后**再 `generate_shot_videos(shot_ids)`。返回里 `dispatched` 是派出去的镜(带 `task_id`),
`skipped` 是前置条件没满足的镜(依赖素材图没生成 / 提示词为空 / 已在生成中,按 `reason` 补齐后再派),`failed` 看 `code`。
- 返回里还可能有 `optimizing`:这几镜的模型要先跑一轮提示词优化(此时还没扣视频积分),跑完服务端会**自动接力派视频**。
处理法:先 `get_task_status` 等 `optimizing` 里的 `task_id` 到终态,再 `get_video_summary` 看该镜的 `video_task_id`,
拿它继续轮询。该镜一直没有 `video_task_id` 时看它的 `failure_reason`(比如接力派视频时积分不足):按原因处理后,
问过用户再重新 `generate_shot_videos`。优化那一轮失败不会自动重试,同样重新派即可。
### ⑦ 等结果(轮询纪律)
- `get_task_status(task_ids, wait_sec=25)`:服务端会等到任务终态或 25 秒超时再返回。**一次调用等 25 秒**,
返回还在 `processing` 就再调一次,⛔ 不要几秒刷一次。一次最多查 50 个 task_id。
- 视频生成通常几分钟一镜,素材图几十秒。等待期间可以先做别的环节,或告诉用户预计还要多久。
- 任务 `failed` 时积分自动退回,`error` 里有原因;按原因修正(改提示词 / 换模型)后**向用户确认**再重新派单。
### ⑧ 交付
- 每一镜生成完就展示给用户(能播就播,不能播给链接);全部镜 `success` 后 `get_video_summary` 按分镜顺序再汇总一遍。
- **合成整集是你的事**:把各镜视频按顺序下载、用 ffmpeg 等工具拼接,平台不提供合成。
- 每镜视频都展示给用户、用户确认满意后,`update_episode_stage` 推进到 `done`。
- 这个项目还有别的集?见下一节。
## 多集项目
**一次只做一集,做完一集再做下一集。** 建项目时一口气建了 3 集,不等于 3 集都做完了——
每一集都要各自走完 ③ 到 ⑧。
- **一集交付后**,调 `get_project_detail` 看这个项目各集的阶段,接着做**序号最小的、阶段还不是 `done` 的那一集**,从它当前的阶段继续。
⛔ 不要因为「刚才那一集做完了」就以为整个项目做完了,更不要去新建后面的集。
- **只有两种情况才 `create_episode`**:现有各集都已经做完;或者用户明确要求加集。
- **建集前必须先 `get_project_detail`**:新集序号 = **项目现有最大序号 + 1**,既不是「刚做完那集 + 1」,也不是用户文档里标的号。
向用户确认时必须报这个真实序号,那是用户唯一能发现建错地方的机会。
- `create_episode` 的 `episodes` 收数组,多集**一次传完**(单次最多 5 集,超过就分批**串行**:拿到上一批结果再调下一批)。
⛔ 绝不要并行调——并行会让几集抢到同一个集序号,用户拿到三个「第 2 集」。
- **用户给的剧本里带集号时,先分清「新建」还是「改写已有集」**:剧本文档几乎都从「第一集」开始编号,那是文档内部编号,
与项目集序号无关。拿 `get_project_detail` 里各集标题与剧情指令比对:内容是另一个故事 → 按新集建,确认时写出
「文档第 X 集 → 项目第 N 集」的映射;内容就是已有的那几集 → **别自己决定**,问用户是新建还是改写,并列出那几集当前的阶段与分镜数,
让用户看到改写的代价(已到视频阶段的集,改剧本要重拆分镜、重生画面)。
### 跨集连贯
- 写新一集之前读 `get_story_bible`(剧情记忆:梗概、人物现状、伏笔)与上一集的 `get_episode_summary`,
新一集的开头要接得上上一集的结尾。剧情记忆由平台自动维护,你只读不写。
- 已有的角色 / 场景 / 道具 / 音色一律 `link_material_to_episode` 复用;只有这一集新出现的才 `add_material`。
同一个角色在这一集换了造型(换装 / 受伤 / 变老),按素材师 skill 里「变体」的规则建,不要另起一个无关的新角色。
## 用户要改东西时
### 先分清改的是哪一个「提示词」
同一镜有**两个**提示词:**视频提示词**(给视频模型,`update_video_prompt`)与**分镜图提示词**(给文生图模型、产出分镜图,
`update_keyframe_prompt`);素材另有**素材图提示词**(`update_material_prompt`)。用户说「改一下第 N 镜的提示词」且没说清是哪个时,
**问用户**,并允许两个都选——这两个常常要一起改,逼用户二选一会漏掉另一个。用户明说了就按词直接办。
### 改动会牵连下游:先列清单,再动手
**一律原地改,阶段不回退**(`update_episode_stage` 往回推会被拒,返回 `STAGE_ROLLBACK_REJECTED`)。
改之前先 `get_episode` 看下游有没有产物;有,就把「会变脏的下游产物 + 重做链路 + 哪些要再花钱」列给用户确认,用户同意再改。
| 改了什么 | 下游要跟着做什么 | 要不要再花钱 |
| --- | --- | --- |
| 剧本的主题 / 调性 / 核心人物 / 主线 | 素材按新 `asset_intent` 核对增删改 → 受影响的分镜重写视频提示词 | 变了的素材图、受影响镜的视频都要重生 |
| 剧本局部(几句台词 / 一场戏) | 按剧本师 skill 的块 id 规则只改那几块 → 引用这些块的分镜重写视频提示词 | 只有那几镜的视频要重生 |
| 一句台词的措辞、本集标题 | 直接改,不用列清单 | 台词进了视频的那一镜要重生 |
| 某个素材的提示词 / 造型 | 素材图重生 → 引用它的分镜检查提示词是否还成立 | 该素材图 + 引用它的镜的视频 |
| 从本集移除某个素材 | `remove_material_from_episode` 会返回仍在引用它的分镜;向用户确认后重写这些镜的视频提示词清理引用 | 这些镜的视频 |
| 某一镜的时长 / 内容 | 只改这一镜,连带重写它的视频提示词 | 只有这一镜 |
| 加一镜 / 删一镜 / 调顺序 | `insert_shot` / `delete_shot` / `reorder_shots`,之后重跑两个覆盖校验 | 新镜要生成 |
- 改完把改动后的那部分产物重新展示给用户(改了哪几句台词 / 哪几镜)。
- **文字层改完即止**:受影响的素材图 / 分镜图 / 视频需要重生,但你**不要自动触发**(会扣积分)。
列出需要重新生成的项告诉用户「这些需要重新生成:…」;用户要重新生成时,再用计算价格的工具报准数,用户点头再派。
- ⛔ **改单镜时长是局部改动,不要牵连其它镜**:用户说「第 2 镜延到 15 秒」就只改第 2 镜。
绝不主动压缩其它镜、也不主动改集时长去让总和回到设定值——用户自己加的量 ta 自己认。唯一例外:用户明确要求「整集压到 N 秒」。
(反过来,**首次拆镜 / 整体重做分镜**时各镜时长之和必须精确等于集时长,那条在分镜师 skill 里。)
- 改剧本时按剧本师 skill 的**块 id 修订纪律**传:没改的块带原 id 原样传回、新增块不带 id、删除的块不传。
⛔ 不要把整集推倒重来——块 id 一换,所有分镜对剧本块的引用全部变脏。
- 素材环节发现「剧本里根本没有这个角色 / 道具」:不要硬塞素材,先问用户要不要回剧本补这段戏,用户同意再原地改剧本、然后回来补素材。
分镜环节发现「素材里没有 X」同理,先回素材环节补。
- 补素材时,缺的那条先用 `patch_asset_intent` 单条登记进素材意图清单,再按素材师 skill 建条——清单里没有的条目素材环节不建。
- 用户要**整体重拆分镜**:先 `get_storyboard` 看有没有手动插入的镜,有就先告诉用户「重拆会清掉 N 个手动插入的分镜」,用户确认再重拆。
- 拆分镜时某一镜同场素材超过 8 个、又拆不开:这是剧本层的问题,别硬塞。问用户要不要回剧本精简这段同时在场的角色 / 道具,
用户同意就原地改剧本那一段,再重拆分镜。
## 生成类动作的细则
| 工具 | 生成什么 | 前置条件 |
| --- | --- | --- |
| `calculate_image_cost` | 不生成,计算图片(素材图 / 分镜图)要花多少积分 | 无;不扣费。派图片之前先调它 |
| `calculate_video_cost` | 不生成,计算视频要花多少积分 | 无;不扣费。派视频之前先调它 |
| `trigger_material_image_generation` | 一条素材的素材图 | 该素材提示词非空。逐条调,没有批量;先 `calculate_image_cost` |
| `trigger_keyframe_generation` | 一镜的分镜图 | 该镜分镜图提示词非空,否则返回 `PROMPT_EMPTY`(先 `update_keyframe_prompt` 写好,**再次确认**后才生成);先 `calculate_image_cost(kind='keyframe')` |
| `trigger_all_keyframe_generation` | 本集所有镜的分镜图 | 同上;默认跳过已生成的 |
| `generate_shot_videos` | 若干镜的视频 | 该镜视频提示词非空、它引用的素材图都已生成;先 `calculate_video_cost` |
| `request_material_image_upload` | 不生成,换出一次性上传地址 | 你已经把图存成了本地文件;不花积分,但同样先问过用户 |
- 分镜图**不是**视频的前置,用户没要就不要生成(一张分镜图不便宜)。
- 提交成功返回 `task_id`,之后用 `get_task_status` 等;⛔ 不要用 `get_episode_materials` / `get_storyboard` 反复刷进度。
- **提交失败(`ok=false`)不要自动重试**:原因多半是积分不足 / 提示词被审核拦下 / 参考图无效,重试只会再失败一次。
把 `message` 原样转告用户;积分不足按上面「积分不够时按这个顺序补」处理。
- ⛔ 用户没要求就不要重复触发同一个生成——已在生成中的会被跳过,已经生成好的再触发一次就是再扣一次钱。
- 用户说「生成所有角色的图」:先 `get_project_materials` 过滤出角色,`calculate_image_cost(kind='material_image', ids=[…])` 计算价格,报出数量与积分,确认后逐条触发。
- 「卡住了 / 一直转圈 / 想撤销刚才那次重新生成」:MCP 里没有重置与撤销,请用户在网页对应的素材卡 / 分镜卡上操作。
## 目前做不了的事(直说,别硬试)
配音 / 字幕 / 人声分离 / 剪辑时间线、3D 预演、拉片换皮(照一条参考视频改编)、上传视频或音频——
这些只能在平台网页(https://www.renzheai.com)上做。用户要这些时告诉 ta 去网页,不要用别的工具凑。
Attribution
Related skills
View all in ai-agents →Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.