scenario-ugc
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseScenario UGC Creator Video
Scenario UGC创作者视频
Overview
概述
UGC is a register, not a length: content that reads as a person talking into their own phone, not a brand talking through a camera crew. Everything in this skill serves that register, and most failures come from importing ad craft into it. This skill routes the production; mechanics live in the sibling skills named per lane. Connection and the core loop: see the skill in this repo. If a sibling skill named here is missing from your available skills, ask the user to install it (); unattended, proceed from tool schemas and flag the gap.
scenarionpx skills add scenario-labs/skills --skill <name>Two rules are non-negotiable. The product is never generated: demo shots start from an uploaded photo or footage of the real product ( for stills). And the words are never invented: no fabricated testimonials, review counts, metrics, medical or financial claims, or legal copy; speak only lines the user supplied or approved, and prefer observable statements ("the texture looks lighter") over claims ("this cures acne").
scenario-product-shotsUGC是一种风格调性,而非时长规格:它是普通人对着自己手机说话的内容感,而非品牌通过摄制团队输出的官方感。本技能的所有内容都服务于这一调性,大多数失败案例都是因为把广告制作的思路套了进来。本技能负责生产流程的调度,具体操作细节在按赛道命名的配套技能中。核心逻辑与闭环:参见本仓库中的技能。如果此处提到的某个配套技能不在你的可用技能列表中,请让用户安装它();若处于无人值守模式,则根据工具schema继续执行,并标注缺失的技能。
scenarionpx skills add scenario-labs/skills --skill <name>两条铁则不容商榷:产品绝对不能生成:演示镜头必须基于上传的真实产品照片或视频素材(静态图参见)。台词绝对不能编造:不得虚构用户证言、评论数量、数据指标、医疗或财务功效声明,以及法律相关文案;只能使用用户提供或认可的台词,优先使用可观察的表述("质地看起来更轻薄")而非功效断言("这个能治愈痤疮")。
scenario-product-shotsQuick reference: route by speaker lane
快速参考:按说话者赛道分流
Discover members with , passing the lane's capability and the user's own words: it ranks by measured cost and latency and names the purpose-built pick, where a capability-worded returns hundreds of keyword hits with nothing to choose between them. Read before taking a pick, per the skill. Keep for a member you can already name. Never assert a generative model's id as a constant. Scenario's own single-purpose tool models are named outright below: there is exactly one of each, so discovering them would only re-derive a constant.
recommendsearchnext_stepscenariosearch| Lane | Route | Contract |
|---|---|---|
| Portrait plus speech audio | Talking-avatar members ( | |
| Existing footage, new words | Lipsync members ( | |
| Recorded delivery, different face | Motion-control members ( | |
| Generated creator speaking natively | Native-audio video families ( | |
| Faceless voiceover | B-roll clips ( | |
| Product demo inserts | Image-to-video off the uploaded product still | |
| Captions, cut, 9:16 master | Assembly tool models; text cards as image layers | |
Script in six spoken beats: hook (one concrete tension or result), context (why this speaker cares), product moment, proof (visible demo or a user-supplied fact), turn (objection answered or before-after), close (soft CTA). Write for the mouth, not the page: contractions, false starts allowed, no taglines. Spoken pace runs near 2.5 words a second, so a 25-second ad is roughly 60 words, but that is a first guess and avatar members undershoot it: observed rates run 1.76 to 1.94 words a second, and one member padded a 60-word script with 21s of silence instead. Time the returned clip before assembling, then trim the silences where there are any and cut the script where the delivery is simply slow. The compositor has no cut inside a layer, so a trim is one layer per kept segment, each with its own and .
trimStartdurationKeep the register in every visual prompt: phone-height framing, available light, a real location with clutter, natural skin texture, one handheld drift at most. Cinematic grammar (dolly moves, golden-hour rim light, shallow anamorphic looks, graded color, retouched skin) reads as an ad and kills belief. Compose 9:16 natively, reframing any non-vertical still a lane consumes (the avatar portrait, a motion-control character still, the product photo) per before generating; a cropped 16:9 master frames like television.
scenario-formats使用发现模型,传入对应赛道的能力和用户的原话描述:它会根据实测成本和延迟排序,给出专门适配的选项,而用能力关键词进行会返回数百个结果,无法区分优劣。按照技能的要求,选择前先阅读。仅用于你已经知道具体名称的模型。绝对不要把生成模型的ID当作常量硬编码。Scenario自家的单用途工具模型会在下面直接列出:每个类型只有一个,所以去发现它们只是多此一举。
recommendsearchscenarionext_stepsearch| 赛道 | 分流路径 | 对应技能 |
|---|---|---|
| 人像+语音音频 | 口播Avatar模型( | |
| 已有视频素材,更换台词 | Lipsync模型( | |
| 已有录制口播,更换人物形象 | 动作控制模型( | |
| 原生生成创作者口播 | 原生音频视频类模型( | |
| 无脸旁白 | B-roll片段( | |
| 产品演示插入片段 | 基于上传的产品静态照生成图生视频 | |
| 字幕、剪辑、9:16母版 | 剪辑合成工具模型;文本卡片作为图像层添加 | |
脚本分为六个口播节拍:钩子(一个具体的冲突点或效果展示)、背景(讲述者为什么关注这件事)、产品出场、证明(可视化演示或用户提供的事实)、转折(回应质疑或前后对比)、收尾(软CTA)。要为口播写脚本,而非书面文案:允许使用缩略表达、卡壳起句等自然口语瑕疵,不要口号标语。口播语速约为每秒2.5个词,因此25秒的广告大概是60个词,但这只是初步估算,Avatar模型的语速会更慢:实测语速为每秒1.76到1.94个词,甚至有模型会给60词的脚本填充21秒的空白。合成前先给返回的视频计时,剪掉所有空白片段,语速过慢的地方直接删减脚本。合成器不支持图层内部裁剪,因此每保留一段片段就要对应一个图层,每个图层单独设置和参数。
trimStartduration所有视觉提示词都要保持UGC的风格调性:手机高度的取景、自然光、有杂物的真实场景、自然皮肤纹理,最多允许一处手持晃动的镜头感。电影化手法(推拉镜头、黄金时段轮廓光、浅景深变形宽银幕效果、调色、磨皮)会显得像广告,破坏真实感。直接原生制作9:16比例的内容,所有赛道用到的非竖屏静态素材(Avatar人像、动作控制人物静态照、产品照片)都要在生成前按照规范重新构图;裁剪16:9的横屏母版会显得像电视画面,缺乏手机感。
scenario-formatsWorked example: 25-second founder ad from a portrait
实操示例:基于人像制作25秒创始人广告
- Brief once: offer, platform, runtime, the facts the founder may claim, tone. Collect the portrait and the real product photo, then run without stopping.
- Create this run's collection before the first generation (, catalog write lane,
collection_createonly), thennameeach keeper as it lands; its returnedcollection_add_assetsis the receipt.itemCount - Draft the six beats at about 60 words and confirm the wording with the user; the script is a claims surface, not just copy. Unattended, keep every line to wording the brief already supplied and cut any beat that would need a new claim.
- Voice: the founder's recorded narration, or generate TTS per
upload_assetwhen they want a stand-in voice they approved.scenario-elevenlabs - with
recommendand the brief in the user's words; pick from its ranked list by input contract (a script-taking member when the speech exists only as text, an audio-taking one when a recording exists), then by whether the member can be told not to burn in captions: some hallucinate gibberish subtitles that no negative prompt suppresses, and the ones with a switch cost several times more, whichcapability="img2video"prices for you.recommend - the portrait. Prompt the speaker's hands empty and the set free of products: avatar members invent props and label type.
upload_assetwithmodel_runfirst: avatar members sit far apart on price, so quote before spending.dry_run=true - Run for real with , then
wait=falsewith the returned job id, re-called withjobs_waiton timeout, never a secondpending_job_ids.model_run - Demo insert: animate the uploaded product photo with an image-to-video member (), 3 to 5 seconds, one micro-move. Whether
scenario-videosurvives a start image is per member and the schema note can be wrong either way, so readaspectRatioandwidthoff the returned asset rather than assuming the ratio held.height - Assemble with per
model_scenario-compose-video: talking head as the spine, insert cut over beats three and four, product-name card fromscenario-video-assemblyas an image layer, dropped outright when no approved product name exists, since inventing one is the fabrication the brief forbids. Every overlay layer needs an explicitscenario-text-overlayandwidthor the compositor scales it, andheightpins the master's length against image layers that would stretch it. A succeeded compose job is not proof the layers drew or landed where sent: pull a frame from the composite and confirm the card is present and placed before delivering. Captions come last, on the finished cut, from the captionerdurationMode: "custom"discovers withscenario-video-assembly(two exist, so no fixed id), positioned inside the platform's safe zone: the compositor has no text layer.recommend - the master. Gate every generated clip, the talking head included: take the frames from the platform, the free
asset_displayandfirstFrameofflastFramefirst andasset_getwhen a mid-clip frame is what settles it, then verify them against the uploads (model_scenario-video-to-image-seq); a local extraction is not a substitute at any budget, because it yields no asset to file or audit and the gate stops being traceable; an invented product in the speaker's hands or legible generated type fails a clip exactly like label drift on the insert. Report spend by summing this run's own job records by job id:scenario-asset-analysisis project-scoped and over-reports, andjobs_list's headline figure is project-lifetime.usage
- 一次性收集需求:优惠信息、发布平台、视频时长、创始人可声明的事实内容、语气风格。收集人像照和真实产品照片,然后一气呵成完成制作。
- 首次生成前创建本次运行的素材集(,目录写入赛道,仅传
collection_create参数),每生成一个可用素材就用name添加;返回的collection_add_assets就是操作凭证。itemCount - 按照六个节拍起草约60词的脚本,并和用户确认措辞;脚本是声明的载体,不只是文案。如果是无人值守模式,所有台词都必须严格使用需求中已提供的措辞,任何需要新增声明的节拍都直接删掉。
- 配音:上传创始人录制好的旁白,如果用户需要经其认可的替代配音,则使用
upload_asset生成TTS语音。scenario-elevenlabs - 调用接口,传入
recommend和用户原话描述的需求;从返回的排序列表中选择模型,首先看输入契约(如果只有文本台词就选支持文本输入的模型,如果有录制好的音频就选支持音频输入的模型),其次看模型是否支持关闭烧录字幕:有些模型会生成乱码字幕,负面提示词也无法抑制,而支持关闭字幕的模型价格要高出好几倍,capability="img2video"会帮你标注价格。recommend - 上传人像照。提示词中要说明说话者双手为空、场景中没有产品:Avatar模型会凭空生成道具和文字标签。先调用
upload_asset并设置model_run:不同Avatar模型的价格差异很大,所以要先报价再实际生成。dry_run=true - 正式运行时设置,然后用返回的任务ID调用
wait=false,超时的话用jobs_wait重新调用,绝对不要重复调用pending_job_ids。model_run - 演示插入片段:用图生视频模型()给上传的产品照片添加动态效果,时长3-5秒,仅做一个微小动作。
scenario-video参数是否会被起始图片覆盖取决于具体模型,接口文档的说明可能不准,所以要从返回的素材中读取实际的aspectRatio和width,不要假设比例保持不变。height - 按照规范调用
scenario-video-assembly进行合成:以口播视频为主干,在第三和第四个节拍处插入演示片段,用model_scenario-compose-video生成的产品名称卡片作为图像层添加;如果没有经过认可的产品名称就直接去掉卡片,因为编造产品名属于需求禁止的虚构内容。每个叠加层都必须明确设置scenario-text-overlay和width,否则合成器会自动缩放;设置height可以固定母版时长,避免被图像层拉长。合成任务成功不代表图层都正确渲染或位置正确:交付前要从合成视频中抽一帧,确认卡片存在且位置正确。字幕最后加,在成品剪辑上添加,字幕工具由durationMode: "custom"通过scenario-video-assembly发现(有两个可选,所以没有固定ID),字幕位置要在平台的安全区内:合成器没有文本图层。recommend - 调用展示母版视频。所有生成的片段(包括口播视频)都要经过审核:先从平台获取帧,先用
asset_display接口免费获取asset_get和firstFrame,如果需要中间帧来确认就调用lastFrame,然后对照上传的原始素材进行验证(model_scenario-video-to-image-seq);任何预算下都不能用本地抽帧代替,因为本地抽帧不会生成可归档或审计的素材,审核过程也无法追溯;如果说话者手里出现了凭空生成的产品,或者有清晰的生成文字,该片段直接不合格,和插入片段的标签偏移问题一样严重。费用统计要按任务ID汇总本次运行的所有任务记录:scenario-asset-analysis是项目级的,会多统计,而jobs_list的总数据是项目全生命周期的。usage
Common mistakes
常见错误
- Writing ad copy and handing it to a mouth: alliterative taglines collapse on a talking head; read the script aloud before generating.
- Fabricating social proof: an invented "10,000 five-star reviews" is a claim the user never made; keep numbers and testimonials to supplied wording.
- Prompting the creator like a commercial: tripod framing, perfect light, and a spotless studio kitchen read as an ad; imperfection is the format.
- Passing both audio and to a lipsync member: exclusive inputs; pick one.
text - Skipping on avatar and lipsync runs: per-member pricing varies too widely to guess.
dry_run - Generating the product or any on-screen text: the product comes from the uploaded photo, type is overlaid in assembly. Native-speech members can caption the quoted line, and those captions collide with the ones the captioner places in the safe zone, so end every dialogue prompt with "no subtitles, no on-screen text". There the line is the only lever and costs nothing, and it is not a guarantee (one native-speech member captioned anyway at authoring time), so pull a frame before compositing; avatar members can hallucinate subtitles no prompt suppresses, which is why step 5 prices their caption switch.
- One 40-second b-roll or generated-creator take: generate per-beat clips and cut on the beat turns; single long takes drift and cost more to retry. A talking-head script stays one take, trimmed in assembly.
- Cropping a landscape master to 9:16: heads and captions land outside the safe zone; compose vertical from the start.
- 写广告文案然后直接让数字人口播:押头韵的口号标语在口播里会非常违和;生成前一定要大声读一遍脚本。
- 编造社交证明:虚构的"10,000条五星好评"是用户从未提过的声明;所有数字和证言都必须严格使用提供的措辞。
- 把创作者提示词写得像商业广告:三脚架取景、完美光线、一尘不染的工作室厨房会显得像广告;不完美才是UGC的精髓。
- 同时给Lipsync模型传入音频和:这两个输入是互斥的,只能选一个。
文本 - Avatar和Lipsync任务跳过:不同模型的定价差异极大,不能凭猜测。
dry_run - 生成产品或任何屏幕文字:产品必须来自上传的照片,文字要在合成阶段叠加。原生语音模型可能会给台词加字幕,这些字幕会和字幕工具在安全区添加的字幕冲突,所以每个对话提示词的结尾都要加上"no subtitles, no on-screen text"。这句话是唯一的控制手段,而且没有成本,但也不是百分百有效(有一个原生语音模型即使加了提示还是会生成字幕),所以合成前一定要抽帧检查;Avatar模型可能会生成任何提示词都抑制不了的乱码字幕,这也是步骤5里要考虑字幕开关价格的原因。
- 一次性生成40秒的b-roll或创作者视频:应该按节拍生成片段,在节拍转换处剪辑;单条长镜头容易出现内容偏移,重试成本也更高。口播脚本可以用单条长镜头,在合成阶段裁剪即可。
- 把横屏母版裁剪成9:16:人脸和字幕会落到安全区之外;从一开始就按竖屏构图。