带货视频脚本与分镜
写出一条商家今天就能拍的三十秒带货视频:先写口播稿和分镜,开头三秒有钩子,每个卖点都用一个动作表现出来;再用商家自己的产品照片做成镜头,配上口播,接成一条视频。
你会拿到什么
第一条回复,全部是文字,任何服务都还没连接:
- 大约 30 秒的口播稿:交付前先数好字数,中文 120 到 150 字,或英文大约 65 到 80 个词。它以一个能拍出来的 3 秒钩子开场(一个动作,或一个对比),带一到两个卖点,每个卖点都对应一个能拍的动作,结尾只有一句行动号召。
- 六到八个镜头的分镜:镜号、秒数、画面(看得见的动作)、台词或字幕(听到的内容),以及声音(这一镜需要的那一个音效,或「无」)。各镜加起来是 28 到 32 秒,每一镜都能单独拍。
- 用户带来一条爆款视频时:先给拆解(钩子、中间的节拍、行动号召、值得借用的结构,以及换成用户的产品时必须改掉的地方),再给按他们的产品重写的脚本和分镜。
连上 Beatra 之后,每一项都按定稿的文字来做:
- 先把开场镜头做成一段视频,在做其余镜头之前先看效果。
- 大约 30 秒的带货视频:分镜里的每一镜都做成一段(最多 12 镜),按顺序和口播接成一条 120 秒以内的 MP4;默认用 9:16 画布,也可以用用户选的 3:4、1:1 或 16:9 画布。
- 单独的口播:用用户从音色库里选定的音色,把定稿脚本做成一个音频文件。
- 做拆解时,只在用户要求时:实时读取一条抖音帖子(文案、作者、看得见的数据,以及一页评论),或读取用户提供的视频文件里的各帧画面。
生成文件的格式和大小由模型决定,交付时如实说明。
几种做法
- 脚本和分镜。 默认的第一条回复:为用户的产品写的口播稿和分镜。
- 拆解和复刻。 一条被描述、被粘贴、被截图、给了链接,或作为文件发来的爆款视频:先给出它的结构,再把同一个结构围绕用户的产品重写。
- 开场镜头。 把分镜的第一镜做成一段视频。
- 带货视频。 每一镜都做成一段,口播念出来,全部接成一条视频。
- 只要口播。 用音色库里的音色念定稿脚本,做成一个音频文件。
适用范围和相邻做法
商家、品牌或创作者想在抖音、视频号或店铺页面上,为一个产品做一条短的带货视频时,用这条流程:脚本、分镜、按一条爆款的结构来复刻、镜头,以及口播。直播带货的话术,属于直播带货脚本流程。人对着镜头说话,比如店主出镜介绍产品,属于口播出镜流程;用商家自己克隆的声音做口播,属于声音克隆流程。主图和详情页图片,属于电商上架图流程。
产品绝不能凭文字画出来、再冒充实物:每一镜只要出现产品,都必须从用户自己的产品照片做起。没有照片时,这条流程仍然交付全部文字,并做出那些不出现产品的镜头,同时说明缺的是哪些照片;它绝不用网上的图片。照片里能够认出的人(模特、顾客、商家本人)只有在这个人同意之后才可以出现;拿到一个文件、一张公开的图片,或公众人物的画面,都不算同意。生成出来的人物保持匿名,提示词绝不写出真实人物的名字,也绝不描写某个真实的人。
复刻只借用爆款的结构:钩子放在哪里、每一拍做什么、时间怎么安排。它绝不沿用原片的台词、画面、音乐、出镜的人或产品的样子,参考视频的任何一帧都绝不会传进任何一次生成调用。
输入和默认值
必须提供的输入是正在卖的产品。做拆解时,还要有那条爆款视频(被描述、被粘贴、被截图、给了链接,或作为一个文件)加上这个产品。只要口播时,一份写好的脚本就够了。有了这项必须提供的输入,就一次写完整个第一条回复,什么都不问。没有产品时,用一句话请对方补上,同时仍交付一份完整成果,第一行标成「示例」,产品用一只能放进手提袋的便携搅拌杯;这句问产品的话,是这条回复唯一的下一步。
用户给过的平台、时长、受众、价格、促销和卖点都沿用。卖点来自用户说过的话,以及画面里看得见的东西。规格、功效和认证只按用户给出的写法来写;缺了这些,就用一个动作来写,不用数字去填,也不留「待确认」的空档。性能数字(续航、容量、保温能维持的小时数、一项检测结果、一个评分)只有在用户说出它的依据(标签、规格表、检测报告)之后,才可以念出来或显示出来,而且确认卡上要写明这个依据;没有依据时,这句话改用没有这个数字的说法。不写「最好」或「第一」这类绝对化的说法,不写健康或功效上的承诺,不写用户没有给过的价格或促销,也不编造评价、销量、顾客姓名、证书或奖项。脚本太长时,删掉句子;绝不为了塞进去而加快朗读。用户说这条视频是付费合作,或是给另一个品牌做的广告时,保留平台规则所要求的披露,并提醒用户去核对。
默认值:一条 30 秒的视频,六到八个镜头,9:16 的竖屏画布,口播和回复都用用户的语言。
主流程
- 写脚本。 第一条回复不调用任何工具(不开链接、不做查询、不看日期),不要求登录,不报价,也不把这些写作规则念出来。它交出上面那些文字。面对一条爆款视频时,只根据用户写下的内容和实际看到的内容来拆,并标明哪一部分是写下来的、哪一部分是看到的;它绝不描述没有人看过的一帧。只有一个链接时,它把常见的节拍填成标着「尚未描述」的占位,在这些占位上写出复刻,唯一的下一步是请对方用三到五句话说明每隔几秒发生了什么。其他情况下,它用用户的语言只给一个下一步:发一张产品照片,并回复「做出来」,开场镜头会先做成一段视频;每个付费步骤都先出示价格,等对方同意再做。
- 定稿。 凡是要拿去配音或拍出来的内容,都必须已经定稿。如果还是「示例」,先问是用这份示例,还是换成他们自己的产品。用户改了产品、某一个卖点或时长,先把改好的文字给他们看。每一个将要念出或显示的数字,都写明依据;没有依据的数字,就把那句改写成不带数字的说法。
- 只在对方要求时读取爆款。 免费的拆解依据一段描述、截图或文字稿。付费的读取只在用户要求时才做,每一次读取单独一张确认卡。抖音链接允许的操作是:帖子用
social.douyin.video.get_by_url,它的一页评论用social.douyin.video.comments.list。用beatra.social.tools.search找到这个操作,用beatra.social.tools.get读取它的参数和实时价格,并复制它的schema_hash。出示查询确认卡,然后调用一次beatra.social.execute,并用beatra.tasks.get查进度。帖子和每一页评论是各自独立的查询、各自独立的确认卡,绝不自动翻页。链接所在的平台如果没有列在这些操作里,就不做查询;拆解依据用户描述的或发来的内容。如果这次连接上没有这些社交工具,就说明这里不能读取,并依据用户带来的内容继续做。视频文件则调用beatra.models.list并传{"capability": "video_to_text"},在它的卡片上写明文件限制(50 MiB 和 360 秒)和实时的按秒价格,上传这个文件,并只做一次beatra.videos.understand调用。查询看不到任何一帧画面,读取文件也听不到声音:说出来的台词来自用户、文字稿,或画面里看得见的字幕。根据返回的内容重做拆解和复刻,不再收费。 - 定下画布和照片。 上传照片之前,先确认照片里每一个能够认出的人都同意出镜;否则就换一张没有人脸的照片。量出每张照片的像素尺寸和比例;绝不能把「竖图」当成 9:16,因为手机相机默认是 3:4。用
python3 scripts/mcp_client.py upload "<file>" --mime-type <type>上传。合成把每一段都放进同一块画布(9:16、3:4、1:1 或 16:9),不够的地方加边。和画布比例一致的照片原样使用。其余照片,在第一张镜头确认卡之前给出选择,绝不悄悄加边:(a) 照片自己的比例属于这四种之一时,视频就用照片自己的画布,例如 3:4;(b) 用 9:16 画布加边,不另收费,并在每一张镜头确认卡上写明;(c) 每张照片按画布比例重新取景一次,每次单独一张确认卡;每一张重新取景的图都先给用户看过,得到用户的确认之后,才做它对应的镜头。重新取景时,调用beatra.models.list并传{"capability": "image_to_image"},只提交一次beatra.images.transform,使用出示的那张确认卡上的确切模型,照片作为images[0],比例用画布的比例,产品保持原样,只延伸背景。同样的调用,单独用一张确认卡,也可以把产品放进某一镜需要的场景,做成一张静帧;用户确认这张静帧之后,才用它做视频。 - 做开场镜头。 按这一镜来选调用。来自照片、重新取景或场景静帧的镜头,调用
beatra.models.list并传{"capability": "image_to_video"},做一次beatra.videos.animate,这张图作为image。不出现产品的镜头,调用beatra.models.list并传{"capability": "text_to_video"},做一次beatra.videos.generate,这张卡片提供该参数时,把画布作为aspect_ratio传入。先读这张卡片允许的片段时长。上限:一段视频最长是这张卡片支持的最长时长(不超过 30 秒),一次beatra.videos.compose最多把 12 段接成不超过 120 秒。每一段取这张卡片允许的、能装下该镜分镜秒数的最小整秒数,合成时再裁到这些秒数。出第一张镜头确认卡之前,说清镜头数量、确认卡数量(每一镜一张,每一次重新取景或静帧一张,每一次合成一张配音确认卡),以及画布和画面形状。注册时赠送的积分通常不够开始一条视频,所以除非卡片上的account_offer(id 为free_first_video)覆盖这一镜,视频要等用户确认已经充值,或余额够这次估价,才开始做;这个优惠显示requires_claim为 true 时,先把用户引到它的claim_url。镜头确认卡写明选定的时长、画面形状(实时卡片允许时跟照片走),以及已申请秒数的累计。提交出示的那张确认卡上的确切模型;这张卡片列出这项控制时,把generate_audio设为 false;然后查进度,并报告交付下来的画面形状和长度。 - 念口播。 按语言调用
beatra.voices.list,选一个支持该语言的ready音色。调用beatra.models.list并传{"capability": "text_to_speech"},选择mp3(合成接受这种格式),并用beatra.speech.validate(不扣费)给定稿脚本报价。出示配音确认卡,卡上写明文字里每一个数字的依据,只提交一次beatra.speech.synthesize,查进度,并读出真实时长、MIME 类型和大小。一次合成对应一个口播文件;视频分成几部分时,每一部分各有一个口播,见带货视频流程(references/workflow.md)。 - 做其余的镜头。 按分镜顺序,每一镜一张确认卡、一次调用,做法与第 5 步相同。按口播的真实长度来排各段时长:裁切之后的各镜必须覆盖整段口播,最后一镜申请的时长要包含口播结束后大约一秒,已申请秒数的累计保持在 120 或以下。
- 接成一条视频。 每一镜都完成之后,用一次
beatra.videos.compose按顺序接上:各段视频(每一段的end设在它的分镜秒数,最后一段则设成视频在口播结束后大约一秒结束),口播作为narration,以及选定的画布。合成会把各段的原声关掉,所以口播是唯一的声音;字幕和声音一栏留在分镜里,给用户自己的剪辑用。合成不扣费,但仍要使用它自己的client_request_id。 - 交付。 报告每一项任务真实的文件、时长、画面形状、尺寸和
billing.net_charged_credits;一次查询要报告它返回的内容、它的任务、它的状态和它的扣费。看不出来、听不出来的地方直接说明:每一镜动起来之后,产品是否仍和实物一致,以及声音是否把每个名称都读对了。提醒用户把公开发布的视频和音频标注为 AI 生成,并说明平台仍可能把一条复刻判定为与原片过于接近,因此它的画面、声音和节奏都应当不同。结尾只给一个下一步,例如回复「下一镜」来看第 2 镜的价格。
只要口播时,只走第 2 步和第 6 步。只做开场镜头时,走第 2、4、5 步。
请求内容、查询和读取文件的细节、镜头规划,以及一条完整做完的视频示例,见带货视频流程(references/workflow.md)。
连接就绪之前
如果一轮结束时「允许」还没完成,就先把所有不需要连接的内容按用户要的格式交付:口播稿、分镜、拆解和复刻。这一轮交付的就是这些文字。用一句话说明:付费步骤在用户点完「允许」后的下一条消息里继续;「允许」只是完成连接,每个付费步骤在下一条消息里仍要等它当时的确认卡。不要用别的工具或服务填补空档,也不要说出任何没有经过实时调用返回的音色、模型、价格或结果。
需要确认的决定
写好的脚本、分镜和拆解都是免费的。它们不等于同意。
每次付费调用之前,先出示一张当时的制作确认卡,然后等待:
- 内容:要做成什么或读取什么,用用户自己的话说,写明由哪一次调用、哪个模型来做(查询、文件读取、重新取景、场景静帧、镜头或口播),以及它要念出或显示的每一个数字的依据。
- 积分:刚从模型卡片、
beatra.speech.validate或beatra.social.tools.get读到的实时价格。绝不用记忆里的数字。当这次对话中读到的image_to_video或text_to_video卡片带有适用于这一镜的free_first_video优惠时,在实时估价旁边说明它可能不扣费。 - 次数:每张确认卡一次付费调用。每一镜保留自己的确认卡,卡上还要写明镜号、总数、选定的时长、画面形状和画布(用户选择了加边时写明加边)、已申请秒数的累计,以及 12 段 / 120 秒的合成上限。每一次查询、每一次文件读取、每一次重新取景和每一次场景静帧,都保留自己的确认卡。
- 标识:每次调用使用一个新的、不透明的
client_request_id。脚本、照片、音色、模型或控制参数一有变化,就新生成一个标识。 - 如果到此为止:写好的脚本、分镜,以及每一份已经完成的文件,都仍然能用。
- 如果余额不足:原样转述官方提示和其中的充值链接。在用户说已经充值之前,不要重试。
查询、文件读取、重新取景、场景静帧、镜头和口播,各自单独一张确认卡。同意了分镜,不等于同意任何一镜;同意了口播,不等于授权去做镜头;一镜得到同意,也不覆盖下一镜。提交确认卡上出示的那个确切模型,某一张具体的确认卡已经报过价之后,绝不用 auto,也绝不悄悄更换音色或模型。所有远程 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)。
- 任务卡住、没收到回应、调用失败、价格看起来不对、口播比镜头长、某一镜和实物走了样,或用户想要一条更长的视频时,读出问题时怎么办(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)。