mcpField
S
scenario-moderation

scenario-moderation

github.com/scenario-labs创意与媒体1.2k480 次安装1 天前更新
代码仓库

关于 scenario-moderation

scenario-moderation 是一项用于排查 Scenario 生成受阻原因并选择恢复路径的技能,适合处理误报的团队。它区分模型提供方过滤、团队 IP Detection、计划限制和屏蔽列表,并建议先诊断再尝试替代模型。

主要功能

  1. 01读取任务错误与费用信息
  2. 02区分提供方过滤和团队 IP Detection
  3. 03按能力推荐替代模型
  4. 04估算替代方案费用
  5. 05说明提示词与音频审核因素

适用场景

  1. 01排查图像或视频生成被拒原因
  2. 02为误报尝试其他提供方的模型
  3. 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 客户经理寻求升级处理。附加在已完成输出上的版权警告属于提供商标记,仅供参考:素材已交付,是否在商业用途前进行审核由团队决定。

先尝试成本最低的恢复方式

  1. 切换提供商。 通常完全不需要修改提示词。用未经修改的提示词,在其他提供商的两到三个成本相近的替代模型上运行;如果它们放行,过滤器就来自该提供商,而不是内容本身。
  2. 用比例而非强度描述尺寸。 “工作人员够到肩膀的高度”或“刀刃大约和前臂一样长”,能传达与“超大”相同的艺术指导意图,又不会触发暴力内容识别。
  3. 在直接输入模型的内容中弱化可识别的名称。 在提示词中描述设计,并改用参考图来传达身份;这样本来就更能保留外观(参见 scenario-consistency)。对真实人物的比较也采用同样的处理方式。
  4. 约束任何上游改写器。 如果由 LLM 节点编写最终提示词,请将第 2 和第 3 步写入其指令中,否则下一次运行时仍会触发拦截。

然后就此停止。如果所有提供商都拒绝,而且一次如实改写仍未能通过,就说明过滤器确实检测到了实际问题:如实告知用户,并将问题交还给用户。不断生成变体,直到某个版本蒙混过关,这不是艺术指导,而是在规避审查。

实例:被标记的武器道具

工作室自己的角色名为 Onyx,而“Onyx 手持巨大的战锤,锤头布满尖刺”被标记了。

  1. 查看错误:使用 job_get 和 job_id(verbose=true 可查看任务实际运行时使用的确切提示词),或查看 jobs_wait 行中的 error 和 hint 字段。错误指出了内容审核,因此这是服务提供商的过滤器,而非计划限制、团队屏蔽列表或 IP Detection(teams_list 显示 ipDetectionEnforcement: "disabled")。
  2. 使用失败任务的 capability(此处为 txt2img)和用户自己的描述调用 recommend,从其他服务提供商中选两个替代项(不要选失败任务的 modelId 所属服务提供商),分别用 model_run 和 dry_run=true 估算价格,然后在两者上运行原封不动的提示词。若其中一个通过了:问题解决,过滤器属于第一个服务提供商。
  3. 假设它们全都拒绝。只改写一次,按比例描述且不提名字:“一把高及持有者肩部的战锤,锤头宽两个手掌”,并使用参考图保持 Onyx 的外观(参见 scenario-consistency)。
  4. 仍然被所有服务拒绝:停止尝试,并告知用户过滤器似乎在对什么内容作出反应。

常见错误

  • 重试完全相同的提示词:接近阈值的提示词有时能通过,因此偶然成功的重试并没有解决任何问题;视频还会先重新渲染整个片段。
  • 未先尝试其他服务提供商,就改写措辞:改词速度慢,还会损失艺术指导;切换模型只需一次调用。
  • 在同一服务提供商内切换:同一服务提供商的同系列模型共用过滤器;下一个候选项应来自其他服务提供商。
  • 在启用音频的提示词中写出某种流派或乐器来排除它:音频过滤器会读取的正是这个排除项。
  • 以为拥有 IP 就能豁免提示词:过滤器是自动化的,只会看到发送给它的文本和图像。
  • 把所有提及 IP 的拒绝都当成同一道关卡:启用执行后,先根据错误措辞区分原因,再切换一次服务提供商;只有服务提供商过滤器能通过这种方式解决;团队屏蔽需要联系管理员。
  • 将屏蔽报告为 Scenario 故障:先确认其他服务提供商也会拒绝,再通过 scenario-report 提交。
  • 以为更贵的模型过滤器会更宽松而升级:价格与内容审核严格程度无关。
  • 将空模型列表解读为内容审核:团队屏蔽列表或计划限制会在评估提示词之前移除模型。

评论

支持 Markdown