Skip to content
Back to skills

Renzheai Workflow

ASecurity

用仁者爱 MCP 从零做出一集 AI 视频的完整工作流——判品类、建项目、写剧本、规划素材、拆分镜、派单生成视频、轮询拿视频 URL。接到「用仁者爱做视频 / 做短剧 / 做广告片」这类任务时先读本文。

  • 417 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 8, 2026
ai-agentsgo

Works with

  • mcp

Security analysis

A100/100

Scanned November 8, 2026

npx -y skills add infometa/workbuddyskills --skill renzheai-workflow --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Renzheai Workflow?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Renzheai Workflow
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/infometa-renzheai-workflow/badge)](https://www.skillsdirectory.com/skills/infometa-renzheai-workflow)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.