关于 scenario-moderation
scenario-moderation 是一项用于排查 Scenario 生成受阻原因并选择恢复路径的技能,适合处理误报的团队。它区分模型提供方过滤、团队 IP Detection、计划限制和屏蔽列表,并建议先诊断再尝试替代模型。
主要功能
- 01读取任务错误与费用信息
- 02区分提供方过滤和团队 IP Detection
- 03按能力推荐替代模型
- 04估算替代方案费用
- 05说明提示词与音频审核因素
适用场景
- 01排查图像或视频生成被拒原因
- 02为误报尝试其他提供方的模型
- 03确认团队 IP Detection 是否拦截任务
MCP 相关
该技能说明如何使用 Scenario MCP 工具读取任务、团队设置与模型信息,并推荐、估价和测试替代模型。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ scenario-labs/ skills --skill scenario-moderation安装后在 Claude Code 中输入/scenario-moderation确认已加载。
详细介绍
Scenario 生成受阻
概述
有三道关卡可能会阻止生成,其中只有两道会读取提示词。内容过滤器在模型提供商一侧运行,而非在 Scenario 上运行,因此,提供商拦截是所选模型的属性,同一提示词通常可以在目录中的其他模型上通过。IP Detection 是团队自己的关卡:它会在运行前筛查提示词和输入图像,由组织管理员开启,切换模型无法解除拦截。套餐和屏蔽列表限制会在判断任何提示词之前移除模型。遇到拦截时,应先将其视为路由问题,再考虑措辞问题。本技能旨在处理团队有权制作的内容被误判的情况;它不是用来生成提供商禁止的内容。核心流程:参见 scenario 技能。如果此处提到的同级技能不在你的可用技能中,请让用户安装
(npx skills add scenario-labs/skills --skill <name>);在无人值守的情况下,根据工具架构继续操作,并指出这一缺失。
快速参考
| 步骤 | 调用 |
|---|---|
| 查看实际错误 | 使用 job_get 并传入 job_id:该行包含 error 和 hint,以及 modelId(需要排除的模型)和 cuCost(失败运行产生的费用);设置 verbose=true 会添加 metadata.input,其中包含该任务实际运行时使用的完整提示词。也可以读取 jobs_wait 行中的 error 和 hint |
| 确认费用 | 首先查看 job_get 的 cuCost;策略拦截通常会退款,失败任务也会获赔,但因审核而停止的 xAI 生成任务除外(参见 scenario)。不过,预留费用不一定会立即释放,因此稍后使用 usage 确认,将 start_date 和 end_date 限定为任务当天,并设置 include=["usages"],查看各类型的总额(总览数字是项目整个生命周期的累计值;团队策略拦截会显示为单独的 IP Detection 项),若仍产生费用,请向支持团队提交 job_id |
| 查看团队策略 | 使用 teams_list:团队行包含 ipDetectionEnforcement;只要值不是 disabled,拒绝请求并指出知识产权风险就表示这是团队自身的策略,且会在运行前进行筛查 |
| 查找替代模型 | 使用失败任务的 capability 调用 recommend(文本生成图像被拦截时使用 txt2img,有参考图时使用 img2img,将静帧制作成动画片段时使用 img2video),并附上用户自己的描述;将 max_cost_cu 设置为略高于失败行每个素材的 cuCost,以控制在相近的费用范围内,并自行从排名中移除失败的 modelId,因为 recommend 没有排除参数 |
| 为替代模型估价 | 使用 dry_run=true 调用 model_run |
| 用相同意图重新测试 | 对每个候选模型分别调用一次 model_run,保持提示词不变,这样模型就是唯一变量 |
| 四种失败的表现很相似,只有第一种与措辞有关:提供商的审核拦截、团队自身设置触发的 IP 检测拦截、403 Forbidden 错误(套餐不包含该模型),以及团队自行加入屏蔽列表的模型。先阅读错误信息,再修改措辞。 |
为什么合规的提示词也会被拦截
三种触发因素会叠加,而且单独出现时通常都低于阈值:
- 易识别的角色。 自动过滤器会对它们识别的角色名称和标志性特征做出反应。它们无法判断 IP 的所有权,因此团队自己的角色也会像其他人的角色一样被标记。
- 暗示强烈程度的措辞。 用来表达尺度或戏剧性的词语(“oversized”“huge”“massive”)累积起来会被解读为暴力,即使描述对象只是道具。
- 与真人相似。 过滤器会检查输出内容是否与公众人物相似,也会检查提示词中的姓名。因此,平台自己生成的角色设定图,在下一次运行中也可能被拒绝作为参考;提示词中的名人比较(“身材像重量级拳击冠军”)则是通过另一种方式提及姓名。
同时出现两种因素时,提示词就会接近阈值。这就是为什么相同意图有时能通过、有时却会失败:稍微改写就可能越过阈值。上游 LLM 步骤改写提示词是常见原因,因为它会更用力地使用强调词来解决无关问题,并在每次运行时重新触发拦截。
不同提供商的过滤规则不同,与价格无关
Scenario 的公开内容政策指南对提供商进行了排序:Google 的模型(Gemini、Veo)对品牌和角色引用的拦截最多;ByteDance、OpenAI、Ideogram 和 Hunyuan 居中;FLUX 和 Recraft 最宽松。recommend 按实测性能排序,而非按过滤严格程度排序,因此同一提供商的替代模型会继承相同的过滤规则:选择来自其他提供商的下一个候选模型,并查看失败记录中的 modelId,以确认具体模型。提供商通常能从 ID 中看出来;如果看不出来,model_get(仅查询目录的只读通道)会返回包含 complianceMetadata.modelProvider 的记录。
视频和音频拦截
视频会改变拦截的成本。多个提供商会审核完成的渲染结果,因此被拒绝的片段已经完整渲染过,而重试相同的载荷会再次渲染。首先查看失败记录中的 cuCost,并根据速查表确认费用,然后按上述方式切换提供商,提示词保持不变。
音轨会单独接受审核。启用音频的视频运行中出现 OutputAudioSensitiveContentDetected,意味着配乐触发了过滤器;通常是因为点名提到了乐器或音乐流派,即使它们出现在排除项中也是如此。“no music”和“a distant guitar”都曾失败,而“room tone, footsteps, a single voice”则通过了。应正面描述画面内的声音,不要点名要排除的内容;如果片段不需要声音,应在架构支持的情况下关闭音频字段(许多系列支持 generateAudio),而不是提示生成静音。
IP Detection 是团队自己的拦截机制
企业版套餐的团队可以启用 IP Detection,这是 Scenario 自己的拦截机制,独立于任何提供商的过滤器:它会在运行前,根据组织管理员启用的过滤器(虚构角色、品牌和商标、名人肖像、艺术家风格和自定义过滤器),检查提示词和输入图像;如果检测到匹配,就会立即以一条指出知识产权风险的消息拒绝任务,不生成任何内容,也不收取生成费用。检测本身按每次筛查的生成收取 1 CU,每张输入图像另收 1 CU;即使结果是拦截,也会收费,并在 usage 中作为单独的 IP Detection 项报告。视频、音频和 3D 输入不会被分析,也不会收费。该设置记录在 teams_list 行的 ipDetectionEnforcement 字段中:当它显示为 disabled 时,所有 IP 或版权拒绝都来自提供商;启用状态的区别只有一项:检查本身无法运行时,是否允许任务继续,因此应报告字面值,并说明这一区别。启用后,请查看错误指出的是哪种拦截机制:团队的拦截机制会指出知识产权风险,提供商的拦截机制会指出违反内容政策;如果文本没有指出任何一种,就在另一个提供商上用未经修改的提示词运行一次:切换后,提供商过滤器会放行;团队的拦截机制则会在任何模型上重复触发。团队拦截后,可以再尝试一次:用视觉方式描述设计,并确保提示词和任何输入图像中都不含受保护的标记(品牌过滤器会将参考图中出现的徽标视同名称处理,而通用的产品描述不会触发拦截)。如果再次触发,这就不是调用问题,而是需要沟通的问题:告知用户触发了哪种拦截机制;组织管理员负责管理过滤器,并可为获得许可的作品将单个项目排除在筛查之外;经核实的 IP 权利人如果因自己的许可财产反复遭遇误报,可以通过 Scenario 客户经理寻求升级处理。附加在已完成输出上的版权警告属于提供商标记,仅供参考:素材已交付,是否在商业用途前进行审核由团队决定。
先尝试成本最低的恢复方式
- 切换提供商。 通常完全不需要修改提示词。用未经修改的提示词,在其他提供商的两到三个成本相近的替代模型上运行;如果它们放行,过滤器就来自该提供商,而不是内容本身。
- 用比例而非强度描述尺寸。 “工作人员够到肩膀的高度”或“刀刃大约和前臂一样长”,能传达与“超大”相同的艺术指导意图,又不会触发暴力内容识别。
- 在直接输入模型的内容中弱化可识别的名称。 在提示词中描述设计,并改用参考图来传达身份;这样本来就更能保留外观(参见
scenario-consistency)。对真实人物的比较也采用同样的处理方式。 - 约束任何上游改写器。 如果由 LLM 节点编写最终提示词,请将第 2 和第 3 步写入其指令中,否则下一次运行时仍会触发拦截。
然后就此停止。如果所有提供商都拒绝,而且一次如实改写仍未能通过,就说明过滤器确实检测到了实际问题:如实告知用户,并将问题交还给用户。不断生成变体,直到某个版本蒙混过关,这不是艺术指导,而是在规避审查。
实例:被标记的武器道具
工作室自己的角色名为 Onyx,而“Onyx 手持巨大的战锤,锤头布满尖刺”被标记了。
- 查看错误:使用
job_get和job_id(verbose=true可查看任务实际运行时使用的确切提示词),或查看jobs_wait行中的error和hint字段。错误指出了内容审核,因此这是服务提供商的过滤器,而非计划限制、团队屏蔽列表或 IP Detection(teams_list显示ipDetectionEnforcement: "disabled")。 - 使用失败任务的
capability(此处为txt2img)和用户自己的描述调用recommend,从其他服务提供商中选两个替代项(不要选失败任务的modelId所属服务提供商),分别用model_run和dry_run=true估算价格,然后在两者上运行原封不动的提示词。若其中一个通过了:问题解决,过滤器属于第一个服务提供商。 - 假设它们全都拒绝。只改写一次,按比例描述且不提名字:“一把高及持有者肩部的战锤,锤头宽两个手掌”,并使用参考图保持 Onyx 的外观(参见
scenario-consistency)。 - 仍然被所有服务拒绝:停止尝试,并告知用户过滤器似乎在对什么内容作出反应。
常见错误
- 重试完全相同的提示词:接近阈值的提示词有时能通过,因此偶然成功的重试并没有解决任何问题;视频还会先重新渲染整个片段。
- 未先尝试其他服务提供商,就改写措辞:改词速度慢,还会损失艺术指导;切换模型只需一次调用。
- 在同一服务提供商内切换:同一服务提供商的同系列模型共用过滤器;下一个候选项应来自其他服务提供商。
- 在启用音频的提示词中写出某种流派或乐器来排除它:音频过滤器会读取的正是这个排除项。
- 以为拥有 IP 就能豁免提示词:过滤器是自动化的,只会看到发送给它的文本和图像。
- 把所有提及 IP 的拒绝都当成同一道关卡:启用执行后,先根据错误措辞区分原因,再切换一次服务提供商;只有服务提供商过滤器能通过这种方式解决;团队屏蔽需要联系管理员。
- 将屏蔽报告为 Scenario 故障:先确认其他服务提供商也会拒绝,再通过
scenario-report提交。 - 以为更贵的模型过滤器会更宽松而升级:价格与内容审核严格程度无关。
- 将空模型列表解读为内容审核:团队屏蔽列表或计划限制会在评估提示词之前移除模型。