合规培训情景剧
把一条职场制度变成员工能看、能讨论的一场戏:同一个情境先按错误的做法演,再按正确的做法演,人物都是虚构的,制度只引用用户贴进来的原文。然后把它拍出来、配上声音,或让讲师出镜讲解。
你会拿到什么
第一条回复写成文字,此时还没有连接任何服务:
- 培训目标:看完之后学员能说出哪一种是错的、哪一种是对的。
- 角色表:两到三个角色,每个都有职务,以及在这场戏里的作用。每个人名和公司名都是虚构的。
- 大约 2 分钟的分场剧本:先演错误做法,再演正确做法,台词可以直接念。
- 分镜:每种做法大约六个镜头,每个镜头有它的画面、说话人、台词和计划秒数。
- 三道讨论题,每道都附给讲师的答案提示。
连上 Beatra 之后,每一项都根据上面定稿的文字来做:
- 角色静帧:每个角色在这场环境里一张照片级静帧,再加上任何需要另一张画面的镜头的静帧。
- 角色配音:每个角色一个固定音色,每一句台词按剧本顺序各自一个标明的音频文件。
- 情景剧视频:每个镜头随这个角色用自己的声音念出的那句台词动起来,再带字幕接成两条视频,错误做法和正确做法各一条,每条最多 12 个镜头、120 秒。
- 120 秒以内的数字人讲解:讲师本人的照片讲解这条制度,或为本场做开场和结尾,画幅跟照片一致。
生成文件的类型、大小和时长由模型决定,交付时如实说明。
几种做法
- 纸上的一场戏。 默认的第一条回复:目标、角色表、剧本、分镜和讨论题。
- 情景剧视频。 先角色静帧,再台词,再镜头,接成两条视频(错误做法、正确做法),方便讲师在两条之间停下来讨论。整场能放进 12 个镜头和 120 秒时,可以做成一条视频。
- 角色配音。 每一句都配音,每个角色一个固定音色,按编号交付文件,用于纯音频的角色扮演,或用户自己的剪辑。
- 数字人讲解。 讲师的照片和声音讲解这条制度,逐字引用贴进来的条款,或为本场做开场和结尾,120 秒以内。
适用范围和相邻做法
培训师、人力资源同事,或银行、医院、实验室、工厂、办公室里负责合规或安全的人,想把一条制度变成员工能看、能讨论的一场戏时用它。手绘白板讲解属于白板动画流程。娱乐向的短剧属于短剧流程。一整门分成许多课的课程属于讲课或课程流程。
制度和条款只来自用户贴进来的文字,逐字引用;绝不添加他们没有贴过的处罚、条款编号或要求,也绝不写一条做得像正式文件的条款。没有贴进来的原文时,这场戏不写条款编号,也不写处罚数字,并在剧本旁边写明:制度原文还没到,没有编造任何条款。这场戏里的每个人和每家公司都是虚构的。用户贴进来的真实案例保留情节,其中的人名、工号和公司名换成虚构的,并在回复里说明换过。数字(事故次数、损失、罚款)只按贴进来的原文或用户说明的来写,并写明出处;没有依据时,这一句不写这个数字。绝不编造案例、证书、奖项或客户名单。
真实在世的人的脸或声音,只有是用户自己的、或这个人本人已经许可时才能使用;拿到一个文件、一段公开录音或公众人物的视频,都不算同意。用户要同事或上级的脸或声音、又没有这份许可时,拒绝这一部分,角色保持虚构。
输入和默认值
硬性输入是培训主题:一条制度、一种风险,或贴进来的政策、案例或产品说明。给了它,就一次写完整个第一条回复,什么都不问。没给时,用一句话请对方补上主题,同时照样交一份完整成果,第一行标「示例」,主题是新员工防范电话诈骗;这句提问就是这条回复唯一的下一步。做数字人讲解时,贴进来的条款,或对话里已经有的这场戏,就够了。只做角色配音时,对话里已经有的剧本就够了。
用户想把制度讲清楚,而不是演出来时,第一条回复是一分钟的讲解稿,逐字引用贴进来的条款,在句末分成若干段,再加上三道讨论题;下一步是回复「做讲解」,并附上本人的照片。
用户给过的受众、时长、角色、场景、画幅和语言都沿用。默认值:大约 2 分钟,错误做法和正确做法各约一分钟;两到三个角色;每种做法大约六个镜头,绝不超过 12 个;给培训室屏幕用的 16:9 横屏(用户要求时用 9:16、1:1 或 3:4);字幕打开;用用户的语言。有对白的镜头只框住这一个说话的人,台词是一整句,长到能撑住这个镜头。打电话的人出现在他自己的环境里,因为每一句说出来的台词都是在镜头里说的。没有照片或源文件时,仍把全部内容写出来,并说明缺什么;绝不用网上的脸或图片。
主流程
- 写这场戏。 第一条回复不调用任何工具(不开链接、不查资料、不看日期),不要求登录,也不报价格。它交出上面五样文字,结尾用用户的语言只给一个下一步:回复「做成视频」,就把这场戏拍出来;每个付费步骤都先报价,等对方同意再做。
- 定稿。 要拿去画、配音或做成字幕的文字必须是定稿。如果还是「示例」,先问是用示例,还是换成自己的主题。用户改了主题、某个角色或某一句,先把改好的文字给他看。
- 角色静帧。 调用
beatra.models.list并传{"capability": "text_to_image"}。每个角色一张确认卡、一次beatra.images.generate,count为 1,画布比例用这一场的画面比例:按角色表画出这个虚构人物,处在这一场的环境里,中近景,没有文字或标志。用户本人出演某个角色,或已经许可的人出演时:上传任何文件之前,先确认照片里是用户本人,或照片里的人已经许可,然后检查照片并用python3 scripts/mcp_client.py upload "<file>" --mime-type <type>上传,调用beatra.models.list并传{"capability": "image_to_image"},用beatra.images.transform做这张静帧,照片作为images[0]。某个镜头还需要另一张画面(两个人同框、一个动作、屏幕特写)时,单独做一张静帧:一次beatra.images.transform(之前先用{"capability": "image_to_image"}查过模型卡片),已接受的角色静帧作为images,顺序与提示词点名的顺序一致,单独出一张确认卡。读取每张已交付静帧的真实宽和高;比例不对的静帧单独出一张确认卡重画。用户接受每张静帧之后,任何镜头才能用它。脸或制服走样的静帧,做一次beatra.images.edit(之前先用{"capability": "image_edit"}查过模型卡片),这张静帧作为images[0],当这张卡允许第二张图时,角色静帧作为images[1],单独出一张确认卡。 - 角色配音。 用
beatra.voices.list为每个角色选一个音色,并固定它的voice_id;绝不要把显示名称写进voice。某个角色要用用户本人的声音时:上传任何文件之前,先确认这是本人的声音,或已得到说话人的许可(拿到一个文件、一段公开录音或公众人物的视频都不算同意);上传干净的样本,调用beatra.models.list并传{"capability": "voice_clone"},出克隆确认卡,只提交一次beatra.voices.clone,并带上consent_attested: true,用beatra.tasks.get查进度,然后固定返回的voice_id。要用来驱动镜头的台词,等读过镜头要用的视频模型卡片之后再做:调用beatra.models.list并传{"capability": "image_to_video"},选一张接受[image, driving_audio]的卡片,台词的format取自它的driving_audio所支持的 MIME 类型。然后调用beatra.models.list并传{"capability": "text_to_speech"},用beatra.speech.validate(不扣费)给每一句台词报价。每一种演法出一张确认卡,每一句台词单独一行,并有自己的标识,然后对每一句只提交一次beatra.speech.synthesize,并查进度。每一句交付一个文件,标明演法、镜头和角色;实时配音模型卡片要求把文字分段时,按顺序交付各段。只做角色配音时,到此为止:这些文件保持分开,按剧本顺序。把每一句真实的 MIME 类型、时长和大小,对照这张卡的driving_audio限制,并对照实时视频模型卡片允许的最长片段(更长的音频会被截断)。超出driving_audio限制的台词不能驱动它的镜头,因此要问:是把它和同一说话人的下一句接在一起,还是这个镜头保持无声、把这句台词做成字幕。超过最长片段的一句,在一句结束处拆成两个镜头,按出问题时怎么办(references/faq.md)所说,并再次对照 12 这个上限核对这一种演法的数量;每一半作为新的一行台词重新配音,并换一个新的client_request_id。 - 镜头。 上限:一段
beatra.videos.animate最长是这张卡支持的最长时长(不超过 30 秒),一次beatra.videos.compose最多把 12 段合成起来,总长不超过 120 秒。每一种演法是一条视频,最多 12 个镜头、120 秒。出第一张视频确认卡之前,说清每条视频有多少个镜头、确认卡的张数(每个镜头一张视频确认卡,静帧确认卡和台词确认卡另计)、画幅,以及每条视频的计划时长。实时卡片允许时,每一段沿用它静帧的画幅;卡片上会写明。每张视频确认卡之前,把每条视频已申请的时长累计保持在 120 秒以内;每一段向上取整到整秒。每张视频确认卡写明演法、镜头号、总数、累计时长、画幅,以及合成上限。有对白的镜头是一次beatra.videos.animate,静帧作为image,这句台词作为driving_audio,duration取这张卡支持的、能装下这句台词的最小整秒数。无对白的镜头使用一张接受[image]的卡,不传driving_audio,时长用计划长度,并落在这张卡的范围内。提交卡片上写明的那个确切模型,查进度,并读取每一段的真实时长和画幅。片段可能带着模型自己生成的声音;合成时把无对白的镜头静音。 - 合成(每条 120 秒以内)。 某一种演法的每个镜头都做完之后,按镜头顺序用一次
beatra.videos.compose合成:有对白的镜头keep_audio设为 true,无对白的镜头keep_audio设为 false,每一段的end设为它这句台词的真实时长(或无对白镜头的计划时长)和这一段报告的时长中较小的那个,subtitles把每一句台词放在它所属镜头的时间范围内(每条字幕不超过 80 个字符),canvas设为静帧的画幅。合成不扣费,但仍要用它自己的client_request_id。某一种演法超过 12 个镜头或 120 秒时,按顺序分成若干部分来合成,每一部分不超过 12 段、120 秒,部分数和确认卡张数在第一张视频确认卡之前说清。 - 数字人讲解(120 秒以内)。 上传照片之前,先确认形象是讲师本人,或已得到本人许可;然后检查并上传。调用
beatra.models.list并传{"capability": "image_to_video"},选一张接受[image, driving_audio]的卡片。讲稿控制在 120 秒以内,在句末切成这张卡装得下的若干段;条款逐字保留。用beatra.voices.list选一个音色库里的音色,或按第 4 步克隆讲师本人的声音,须先有说话人的同意(一个文件或一段公开录音都不算同意),并单独出一张克隆确认卡。然后调用beatra.models.list并传{"capability": "text_to_speech"},用beatra.speech.validate给每一段报价。读取照片的真实宽和高:片段沿用照片的画幅,手机照片常常是 3:4,而不是 9:16。按这个画幅合成(16:9、9:16、1:1 或 3:4),或者请对方换一张想要画幅的照片,或者单独出确认卡,用beatra.images.transform按想要的比例重新取景一次;不属于这几种画幅的照片要重新取景或换一张,绝不加边补白。出第一张视频确认卡之前,说清分几段、一共几张确认卡(讲师的声音要克隆时一张克隆确认卡,整段讲稿一张旁白确认卡,每一段一张视频确认卡),以及交付的画幅。出旁白确认卡之前,旁白的format取自这张卡driving_audio所支持的 MIME 类型。每一段用所出示卡片上的确切模型生成语音,绝不用auto,查进度,再拿真实的 MIME 类型、时长和大小对照driving_audio限制。每张视频确认卡之前,把已申请的时长累计保持在 120 秒以内。每张视频确认卡写明画幅、段号和累计时长;然后一次beatra.videos.animate,照片作为image,这一段音频作为driving_audio,用所出示卡片上的确切模型(绝不用auto),时长取能装下它的、所支持的最小整秒数。各段按顺序用一次beatra.videos.compose合成(keep_audio设为 true,每一段的end设为它真实的旁白时长,画布等于各段的画幅,条款作为字幕,每条不超过 80 个字符,更长的条款拆到多条字幕里)。情景剧视频的开场或结尾按同样的做法单独做成它自己的一条视频。 - 交付。 报告真实的文件、时长、尺寸、画幅和
billing.net_charged_credits。看不出来、听不出来的地方直接说明(各镜头之间脸是否一致、口型是否对得上、这几个声音是否分得开、看不清的图上文字)。提醒用户把公开发布的静帧、声音和视频标注为 AI 生成,并且人和公司保持虚构。结尾只给一个下一步,比如「回复『正确演法』,我先报它第一个镜头的价格」。
请求体、镜头时长和一个完整的一场戏示例,见培训情景剧流程(references/workflow.md)。
连接就绪之前
如果一轮结束时「允许」还没完成,就先把所有不需要连接的内容按用户要的格式交付:培训目标、角色表、分场剧本、分镜、讨论题,以及任何讲解稿。这一轮交付的就是这些文字。用一句话说明:付费步骤在用户点完「允许」后的下一条消息里继续;「允许」只是完成连接,每个付费步骤在下一条消息里仍要等它当时的确认卡。不要用别的工具或服务填补空档,也不要说出任何没有经过实时调用返回的音色、模型、价格或结果。
需要确认的决定
这场戏、分镜、讨论题和每一份稿子都免费。它们不等于同意付费。
每次付费调用之前,先出一张当时的制作确认卡,然后等待:
- 内容:要做什么,用用户自己的话说,并写明由哪一类调用来做(静帧、修图、重新取景、克隆、台词、旁白或镜头)。
- 积分:刚从模型卡片或
beatra.speech.validate读到的实时价格。绝不用记忆里的数字。 - 次数:每个槽位一次付费调用。只有同一种演法的台词,或一条讲解的旁白,可以共用一张确认卡,每一句单独一行;每一次静帧、修图、重新取景、克隆和镜头都各自单独一张确认卡,每张视频确认卡还要写明演法或讲解、镜头号或段号、总数、累计时长,以及 12 段 / 120 秒的合成上限。
- 标识:每次调用一个新的不透明
client_request_id。台词、提示词、文件、音色、模型、时长或控制项一变,就换一个新的标识。 - 如果到此为止:写好的这场戏和每一个已经做好的文件都仍然能用。
- 如果余额不足:原样转述官方提示和其中的充值链接。在用户说已经充值之前,不要重试。
接受了静帧,并不授权它的镜头;同意了台词,并不授权这些台词所驱动的镜头;一个镜头的同意不覆盖下一个。提交卡片上写明的那个确切模型,绝不悄悄更换音色或模型。所有远程 Beatra 工具都只通过随包的 scripts/mcp_client.py 调用:工具名作为命令参数,JSON 参数从标准输入传入。
不要配置、调用或使用宿主 Beatra Connector。
不要用 REST/OpenAPI 作为降级方案。
如果创建调用的响应或任务编号丢了,先调用 beatra.tasks.list,再调用 beatra.tasks.get,与定稿的请求逐项比对。只有确认不存在这个任务时,才用同一个 client_request_id 重试完全相同的内容。失败的任务在新的确认卡上重做,并换一个新的 client_request_id。
只有用户要求取消时,才调用 beatra.tasks.cancel,再用 beatra.tasks.get 确认这个任务。
用户问还剩多少积分时,调用 beatra.wallet.get。问扣了哪些费用时,调用 beatra.wallet.ledger。模型卡片返回 top_up 内容时,按卡片列出的顺序原样转述各档充值,不排序,也不替用户选。
按任务查阅
- 需要静帧、修图、重新取景、克隆、台词、镜头、合成和数字人讲解的请求示例,以及一个完整的一场戏示例时,读培训情景剧流程(references/workflow.md)。
- 任务卡住、没收到回应、价格看起来不对、脸走样、台词太短、镜头失败,或某一种演法超过 120 秒时,读出问题时怎么办(references/faq.md)。
- 连接还没就绪时,读安装与授权(references/installation-and-auth.md)。
- 首次使用登记,读安装登记(references/installation-registration.md)。
- 任务创建之前调用就失败时,读随包 MCP Client 连接诊断(references/mcp-connection.md)。
- 任务在排队、进行中或找不到时,读任务与结果(references/tasks-and-results.md)。
- 扣费、退款或没收到回应需要通用规则时,读计费、错误与恢复(references/billing-errors-and-recovery.md)。
- 用户想停止使用并断开连接时,读卸载与断开连接(references/uninstall-and-disconnect.md)。
更新与安全
本 Skill 会自动更新。内置客户端每天最多一次从 Beatra 官网读取本渠道的版本信息
(中国大陆网络走 www.beatra.cn 与 cdn.beatra.cn)。有新版本时,它下载官方发布包,
逐个文件校验 SHA-256,再替换本 Skill 自己的文件;你放进这个目录的其他文件不会被
改动。替换过程中断时,下次运行会自动恢复到替换前的状态。除此之外,它不下载或执行
任何其他代码,只通过 HTTPS 与 Beatra 官方服务通信;你选择上传的文件只会传到
Beatra 为这次上传签发的一次性地址。
关闭自动更新:python3 scripts/mcp_client.py update --auto off。关闭后,客户端每天
最多提示一次在你安装它的商店里更新的命令。详见更新与安全(references/updates-and-security.md)。