mcpField
A
app-sizzle

app-sizzle

github.com/pika-labs营销与增长411.7k 次安装14 周前更新
代码仓库

关于 app-sizzle

此 Skill 使用真实应用截图及 Logo 或图标制作 15 秒预告片。它会分析截图、编排简短叙事、增强画面,并生成 1080p 视频。

主要功能

  1. 01生成 15 秒应用预告片
  2. 02获取真实应用截图
  3. 03将截图对应到应用功能
  4. 04增强选定的截图
  5. 05生成 1080p 视频

适用场景

  1. 01制作简短的应用推广片
  2. 02根据 App Store 截图制作预告片
  3. 03按顺序展示应用核心界面

MCP 相关

使用 Pika MCP 工具获取 App Store 截图,并生成或编辑图像与视频。生成前必须具备真实截图和 Logo 或应用图标。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pika-labs/pika-plugins --skill app-sizzle

安装后在 Claude Code 中输入/app-sizzle确认已加载。

附带文件references/liquid-glass.mdreferences/template-a-cinematic.md

详细介绍

App Sizzle — GPT-Image-2 增强版 iOS 应用预告片

从真实应用界面生成一段精致的 15 秒应用预告片。每个选中的界面都会先经过 GPT-image-2 处理,再交给 Seedance,这样压缩后的截图就能成为更清晰的参考图,同时不会凭空编造 UI。

费用透明度关卡

在调用任何付费 MCP 工具之前,调用一次 identity_balance({verbose: true})。展示当前余额、近期消耗速率和剩余可用时长,然后用以下准确消息把关:

预计费用:典型的一次运行约需 3,000-4,000 积分(约 $30-$40),包括截图增强和 Seedance 视频。费用超过 $5,请回复 proceed 继续,或回复 cancel 停止。

在用户回复 proceed 之前,不要调用任何付费 MCP 工具。如果用户回复 cancel,则停止,不要生成内容。对于非交互式 --quick 或 --config 调用者,必须在配置中要求 cost_ack=proceed;如果没有此项,则显示费用估算并停止,不要消耗积分。

**生成约定:**使用 resolution="1080p"、duration=15 和 sound=True。跳过 fast=true,因为它会将 Seedance 限制在 720p。时长和声音由此技能负责,因此用户只需提供应用身份信息、界面、Logo 和宽高比。

视觉美学应源于应用的个性,而不是默认采用流动玻璃风格。Agent 会从应用图标、截图和类别中领会应用的灵魂,然后选择一种处理方式。用户提供应用身份信息和素材;其他所有内容(模式、提示词、镜头、风格)均由 Agent 决定。


生成前的时间限制

在具备所需的应用身份信息以及界面/Logo 来源、并通过费用关卡后,于技能启动时启动计时器。等待用户回复 proceed 或等待非交互式调用者提供 cost_ack=proceed 的时间不计入准备时间,也不会触发此限制。如果缺少所需输入或真实素材,则在阶段 0 或阶段 0.5 停下并索取素材;不要绕过素材关卡。对于已备齐所需输入的运行,首次付费生成调用是 GPT-image-2 的 generate_image_edit 增强环节,必须在技能启动后 5 分钟内调用。如果技能启动后 5 分钟内尚未调用首次 generate_image_edit 增强,则在任何付费生成调用之前停止,并报告 failed_pre_generation_timeout,同时提供目前已有内容:已获取的素材、选定的界面、功能图谱、叙事弧线、增强提示词状态、Seedance 提示词草稿(如有),以及具体阻碍。不要继续完善分析、增强措辞、提示词措辞或镜头描述。

每个准备阶段结束后,以及付费生成调用之前,打印一条单行进度检查点:

  • Stage 1/3 done — assets sourced and screened, analyzing screenshots.
  • Stage 2/3 done — feature map and arc written, locking enhancement prompts.
  • Stage 3/3 done — enhancement prompts locked, calling GPT-image-2 now.

首次调用 generate_image_edit 之前,功能图谱和增强提示词最多编写 2 轮。达到最多 2 轮后,将现有内容提交给 generate_image_edit;不要继续打磨增强措辞、界面分析或叙事弧线描述。增强完成后,Seedance 提示词最多编写 2 轮;然后将现有内容提交给 generate_reference_video。

长时运行的 task_status 轮询

当任何长时运行的生成或编辑调用返回 task_id,无论是否带有初始状态,包括 {task_id}、{task_id, status: "queued"},或初始状态为 queued、running 或 processing 时,都要立即记录任务 ID 和开始时间。

  • 紧密循环调用 task_status({task_id}),直到任务进入终态(completed | failed | cancelled)。不要手动休眠,也不要使用 Bash 轮询;工作线程会让每次状态调用保持打开。
  • 当状态为 queued、running 或 processing 时,每 60s 输出一行可见的进度信息:Seedance i2v queued for {N}m {S}s... still processing。轮询 Kling、GPT-image-2、overlay 或 edit 任务时,替换提供方/阶段标签。
  • 状态为 completed 时,提取返回的结果 URL 并继续。
  • 状态为 failed 或 cancelled 时,向用户说明失败情况,包括 task_id、状态和最后一条状态消息。
  • 从最初提交起总计 15 min 后,如果任务仍未进入终态,则调用 task_cancel({task_id}),然后向用户说明失败情况。如果取消操作报告任务已进入终态,则再调用一次状态查询,并报告该终态结果。
  • 当原任务仍处于 queued、running 或 processing 状态时,不要提交重复请求。

模式:参考图转视频

首选:generate_reference_video(provider="seedance", resolution="1080p"),使用 3–5 张截图,并将应用图标/Logo 作为最后一张参考图。

出现以下情况时,改用 provider="kling", quality_mode="pro"(即 1080p):

  • Seedance 返回非音频的 partner_validation_failed(名人面孔、屏幕录制 UI)
  • Seedance 返回 insufficient_balance
  • Seedance 一直处于排队/运行状态,直至返回超时,例如 seedance timed out after ...

不要将生成音频审核视为立即切换到 Kling 的理由。请先查看 Generate Video 中的 Seedance 生成音频审核恢复手册。

Kling 提示词使用 <<<image_1>>> … <<<image_5>>> 标记,而非 @Image1 … @Image5。省略 resolution 参数(Kling 使用 quality_mode)。请参阅 Gotchas。


阶段 0 — 素材搜集

如果调用时参数为空且没有相关的先前上下文,请原样打印此菜单并停止。在用户提供应用身份和屏幕来源之前,不要调用工具。

To make your app promo, I need:

1. App name + one-line description of what it does
   (e.g. "Nova — an AI journaling app for iOS")

2. Where should I pull the app screens from?
   — iOS App Store: give me the App Store URL or app name → I'll use
     `fetch_appstore_screens` to fetch screenshots, metadata, and icon
   — Web app / website: give me the URL → I'll capture it with Pika MCP
   — Local files / URLs: drop the paths and I'll upload them

3. Brand logo — path or URL (preferred) or skip to use the App Store icon
   The logo anchors the end card and prevents Seedance from hallucinating brand text.
   If you don't have a logo file, use the fetched App Store icon as the fallback.

4. Aspect ratio: 16:9 (landscape/YouTube) / 9:16 (Reels/TikTok) / 1:1. Optional: `variants=16:9,9:16,1:1` to export multiple deliverables from one render.

如果触发消息或先前上下文已提供部分信息,则在调用任何工具之前,只询问缺少的必填项。用户只需回答这些问题;由 Agent 决定模式、提示词、镜头和风格。

用户回答后,Agent 将:

  1. 获取屏幕素材(MCP App Store 抓取/网站截图/上传本地文件)
  2. 分析每个屏幕(阶段 1)— 阅读每张截图,将 UI 与功能对应起来
  3. 设计叙事弧线(阶段 2)— 在处理提示词之前,先构建 15s 的故事结构
  4. 选择最适合宣传视频的 3–5 个屏幕(按叙事角色排序)
  5. 上传 Logo 和屏幕素材,以获取公开 URL
  6. 撰写针对屏幕内容的提示词(模板 A 或 B)
  7. 以 1080p 生成

阶段 0.5 — 资产门槛

调用任何生成工具之前,请确认手头有这两种资产:

资产必需缺失时的处理
真实应用截图(≥1 张实际获取的图像)是停止并索要截图
品牌标志或应用图标是使用 App Store 作为来源时,使用 fetch_appstore_screens 图标;否则停止并索要标志或图标

如果缺少任一资产,请明确告知用户需要提供什么,并等待回复。真实资产能让预告片内容有据可依;文本转视频占位内容会让 Seedance 臆造 UI。

避免:

  • 在预期应使用屏幕截图时,用文本转视频替代生成
  • 在提示词中描述虚构的 UI(“一个深色仪表板……”),却不提供真实参考图像
  • 先“暂时使用占位图”
  • 根据应用名称或描述臆测应用的外观

唯一可接受的后续方式是使用用户提供的真实资产。如果 MCP 获取或截图失败(App Store 未返回任何内容、网站截图报错),请说明情况,并让用户手动提供屏幕截图。绝不要臆造。

人物或角色资产的头像类型探测

应用截图和应用图标是默认的视觉参考。App-sizzle 并非用于呈现创始人或创作者面孔的技能,因此绝不能用用户头像填补缺失的屏幕截图或标志。

在调用任何付费的 generate_image_edit 或 generate_reference_video 之前,仅当用户提供的屏幕截图、标志、宣传图片、吉祥物、创始人照片或角色资产中有突出的人物或角色,且该人物或角色将作为增强对象或视频参考时,才运行此头像类型探测。对于带有无关面孔的普通应用截图,优先选择其他截图,或在上传前裁掉面孔。

对该资产调用一次 analyze_media:

query: "Classify this image for paid video generation. Is it a photograph of a real human face, an AI-generated realistic portrait, a stylized / illustrated character, or a recognizable trademarked / copyrighted character such as Batman, Pikachu, or Mickey Mouse? Return strict JSON only: { \"avatar_type\": \"real_human\" | \"ai_realistic\" | \"stylized_illustrated\" | \"recognized_ip\", \"recognized_character\": string | null, \"moderation_risk\": \"low\" | \"medium\" | \"high\", \"recommendation\": \"proceed\" | \"warn\" | \"reject\" }. Use null for `recognized_character` when no specific character is recognized; never write \"none\", \"unknown\", or explanatory prose in that field."

根据结果进行处理:

  • 识别到 IP/存在版权风险 -> 仅在 avatar_type 为 "recognized_ip"、recognized_character 指明了具体角色(例如 "Batman"),或 moderation_risk 为 "high" 且 recommendation 为 "reject" 时,停止。recognized_character: null、空字符串、"none"、"unknown"、"n/a" 以及低/中 moderation_risk 均不足以单独成为停止理由。在实拍/风格化路线之前运行此检查。即使是 Q 版 Batman,只要 avatar_type 为 stylized/illustrated,仍然是 Batman。
  • 真人/AI 生成的逼真人物 -> 仅当这是合法的应用截图或用户提供的宣传素材时才继续;否则请改为索要应用 UI。
  • 风格化/插画角色 -> 继续操作时明确警告:风格化角色可能降低 Seedance 的可靠性,但不得用它们替代缺失的屏幕截图。
  • 商标化/受版权保护的内容 -> 生成前停止。显示以下消息:The supplied avatar appears to be a trademarked character ([X]). Most video providers will moderate this and refuse to generate. Pass --avatar <real-looking-photo-url> to override. 对于 app-sizzle,请索要非 IP 的应用截图/标志,而不是用头像覆盖选项替代屏幕截图。

屏幕截图来源

iOS App Store

使用 Pika MCP 的 fetch_appstore_screens;不要使用本地抓取工具。它接受完整的 App Store URL、数字应用 ID 或应用名称搜索词:

fetch_appstore_screens(
  query: <app_store_url | numeric_app_id | search_term>,
  country: "us",
  max_screens: 10,
  include_icon: true
)

预期结果格式:

{
  "app_url": "https://apps.apple.com/...",
  "metadata": { "name": "...", "subtitle": "...", "description": "...", "category": "...", "icon_url": "https://..." },
  "icon": { "url": "https://cdn.pika.art/...", "source_url": "https://is...mzstatic.com/...", "filename": "appstore-icon.png", "mime_type": "image/png", "width": 1024, "height": 1024 },
  "screenshots": [
    { "url": "https://cdn.pika.art/...", "source_url": "https://is...mzstatic.com/.../1290x2796bb.png", "filename": "appstore-screen-01.png", "mime_type": "image/png", "width": 1290, "height": 2796 }
  ],
  "count": 1
}

如果 fetch_appstore_screens 未返回截图,请报告错误,并向用户索取 3–5 张真实截图和一个徽标/图标。不要改用 Playwright/无头浏览器抓取 App Store,也不要虚构 UI。

获取 App Store 资源后,挑选 3–5 个能展示核心 UI 的画面。跳过:

  • 纯文本/启动画面(无 UI)
  • 空白或加载状态
  • 有人脸的画面(可能触发内容政策)

画面选择原则——最大化视觉反差。 每个选定的画面都应尽可能与其他画面不同:深色与浅色背景、UI 密集与照片为主、微距特写与宽幅网格、极简与繁复。如果所有画面看起来都很相似,Seedance 会把它们混成一团视觉模糊。Dazz Cam 的成功之处:3D 相机网格 + 拍立得成片 + VHS 面板 + 鱼眼球体——四个截然不同的视觉世界。预告片失败的原因:四个画面都是同一 UI 在略有差异的滚动位置。

Web 应用 / 网站(自动捕获)

使用 Pika MCP 的捕获工具:

capture_website(url="https://example.com", mode="screenshot")
# Returns image_url — use directly as a reference

每个要纳入的不同页面/视图都调用一次。

本地文件

用户提供路径 → 通过 Pika MCP 上传每个文件(见下方“资源上传”部分)。


第 1 阶段——应用分析

获取画面后,在写提示词的任何内容之前,先用 Claude 的视觉能力阅读每张截图。这是最重要的一步——跳过它,你得到的就会是一个没有故事的通用玻璃团块。

对每张截图,记录:

  • 显示的 UI——例如,“带有建议提示词的聊天输入框”“带有 AI 编辑标签的视频时间线”“显示生成片段的 Agent 结果卡片”
  • 代表的功能——例如,“创作入口”“Agent 正在处理”“输出/分享”
  • 情绪基调——这是彰显能力的时刻、轻松上手的时刻,还是恍然大悟的时刻?

同时从 fetch_appstore_screens 的结果或用户提供的描述中提取应用元数据:

  • 应用名称、副标题、一句话价值主张
  • 类别和目标用户

第 1 阶段的输出: 编号功能图:

Screen 1 — [filename]: Shows [X UI]. Represents [Y feature]. Moment: [hook/build/reveal].
Screen 2 — [filename]: ...
...

完成功能图后,为每个画面评估视觉独特性:它看起来是否与其他已整理的画面截然不同?优先选择配色、布局密度和主题各异的画面。优秀的组合应拥有最大的视觉差异——开场钩子应与构建段截然不同,构建段又应与揭示段截然不同。

在写出此功能图之前,不要进入第 2 阶段。


第 2 阶段——叙事架构

每支 15 秒的宣传片都需要一条主线。动手填写提示词模板之前,先设计故事弧线。

四拍结构
节拍秒数作用使用哪些画面
开场钩子0–3 秒抓住注意力——展示最具冲击力的 UI 时刻或正在解决的问题视觉冲击力最强的画面
构建3–10 秒按照合乎逻辑的用户旅程顺序演示功能依次展示 2–3 个画面
揭示10–13 秒拉远镜头或展示产品概览——呈现“原来它是这么用的”这一刻广角镜头或最完整的画面
徽标13–15 秒品牌定版——字标显现,强调色脉冲徽标(@Image6 或最后一张参考图)。COMING SOON 会在之后作为生成后文字叠加添加。
故事弧线类型——根据应用选择
弧线适用场景结构
问题 → 解决方案效率/工具类应用开场钩子 = 痛点 UI → 构建 = 应用解决问题 → 揭示 = 结果
功能展示功能丰富的应用开场钩子 = 最出色的功能 → 构建 = 另外 2 个功能 → 揭示 = 概览
旅程消费者/生活方式类应用开场钩子 = 入口 → 构建 = 使用体验 → 揭示 = 结果
转变前后对比类应用开场钩子 = “之前” → 构建 = 过程 → 揭示 = “之后”
阶段 2 的输出

生成前,明确写出故事弧线:

Arc type: [Problem→Solution / Feature Parade / Journey / Transformation]
Hook (0-3s): Screen [N] — [what happens] — camera: [extreme close-up on X]
Build (3-10s): Screen [N] → [N] → [N] — [what each reveals] — camera: [whip pan / orbital / etc.]
Reveal (10-13s): Screen [N] — [what it shows] — camera: [pull-back to show full product]
Logo (13-15s): @Image[N] — wordmark materializes whole in a burst of [accent color] light and holds. Do not ask the video model to render the `COMING SOON` copy; it is added later as a post-generation text overlay.

在定义好故事弧线之前,不要编写 Seedance 提示词。


阶段 2.5 — GPT-Image-2 增强

定义好故事弧线并选出 3–5 个画面后,在上传到 Seedance 之前,先用 GPT-image-2 增强每个画面。这能提升压缩后的网站截图和 App Store 缩略图的质量,使其成为更清晰、保真度更高的参考图。

针对每个选定的画面(包括 Logo/片尾卡参考图):

result = generate_image_edit(
    provider="gpt-image-2",
    prompt="High quality version, preserve all content exactly",
    images=["<original_cdn_url>"],
    aspect_ratio="16:9",   # match the capture — use 9:16 for portrait screens
    quality="medium",
)
# use result.image_url (or result.url) as the Seedance reference

规则:

  • 提示词必须与所示内容完全一致——简短、不作描述。描述图像内容会导致 GPT-image-2 幻觉出新的细节。
  • 让 aspect_ratio 与原始截图一致(桌面端 = 16:9,移动端 = 9:16)。
  • 并行运行所有增强任务(每个画面调用一次)。
  • 在 Seedance 调用中,将增强后的 URL 用作 reference_images 数组,而不是原始图片。
  • 保持阶段 1 的功能图描述不变——这些描述对应原始内容,而增强后的图片会保留这些内容。

阶段 3 — 撰写提示词

准备好功能图(阶段 1)和故事弧线(阶段 2)后,撰写 Seedance 提示词。每条 @Image 描述都必须引用功能图中的真实 UI 内容——不要写“带有控件的移动界面”之类的泛泛描述。

根据应用截图选择模板——不要默认使用液态玻璃。 根据应用的个性,准确阅读以下其中一个模板;另一个不会加载:

  • 模板 A — 电影叙事(默认;生产力、AI、创意、社交、食品、游戏):阅读 references/template-a-cinematic.md。该文件包含经过验证的 BEAT 结构模板和示例。
  • 模板 B — 液态玻璃(仅限摄影、相机、滤镜应用,且镜头/滤镜隐喻恰当时):阅读 references/liquid-glass.md。该文件包含模板 B 框架和玻璃变换词汇。

强调色始终取自品牌——查看图标和主要 UI 颜色,切勿自行编造。

两种模板均适用的规则
  • 每条 @Image 描述都必须直接来自阶段 1 的功能图
  • 镜头运动指示必须直接来自阶段 2 的故事弧线
  • 切勿写“应用界面”或“移动屏幕”——描述必须具体
  • 不超过 200 个词
  • **具体描述为何重要:**Seedance 会将 @ImageN 描述作为主要创作依据——“深色聊天界面”与“包含城市街道、滑板公园和海岸日落的 VHS 三栏网格,并带有复古时间戳叠加效果”会生成截然不同的结果。逐字复制阶段 1 功能图中最具体的视觉细节。

生成视频

首选 — Seedance:

generate_reference_video(
    provider="seedance",
    reference_images=["<url1>", "<url2>", "<url3>", "<url4>", "<url5>"],  # 3–5 screens + icon
    prompt="<prompt using @Image1 … @Image5 tokens>",
    resolution="1080p",   # always
    duration=15,          # always
    sound=True,           # always
    aspect_ratio="16:9",  # or 9:16 / 1:1 per user request
    seed=<int>,           # set one; reuse it for content-policy recovery
)
Seedance 生成音频审核恢复

如果 Seedance 完成生成后返回 422,且响应正文包含 type: "content_policy_violation"、reason: "partner_validation_failed"、loc: ["body", "generated_video"] 和 msg: "Output audio has sensitive content.",则将其视为可恢复的生成音频审核误判。

重试预算:生成音频恢复最多允许在 Seedance 初始调用失败后进行 3 次恢复渲染:一次 sound=False 探测、一次 sound=True 重试,以及一次 Kling 回退。达到上限后,停止操作或按文档说明处理成功的无声 URL;不要继续探测 Seedance。

  1. 使用完全相同的提示词和 reference_images,以 sound=False 和相同的 seed 重试。
  2. 如果无声探测成功,使用完全相同的提示词和参考图集,以 sound=True 和相同的 seed 重试。
  3. 如果 sound=True 重试成功,将恢复后的有声 URL 作为 generated_teaser_url 传入第 4 阶段。仅将无声探测 URL 留作调试上下文。
  4. 如果无声探测失败,将其视为视频/参考图审核失败,并使用 Kling 回退。
  5. 如果无声探测成功,但 sound=True 重试再次失败,则运行一次 Kling 回退。如果 Kling 不可用,则将无声 URL 作为 generated_teaser_url 传入第 4 阶段,并明确说明生成音频审核仍不稳定。

在此恢复流程中,不要更改提示词、参考图、宽高比、时长或 seed。更改其中任何一项都会使无声探测变成一次新的生成,而无法用于测试是否仅生成音频触发了审核。

Seedance 超时恢复

如果 Seedance 在 15 分钟总轮询上限之前返回终态超时,则将其视为服务提供方队列拥塞,而非提示词/内容问题。不要等待服务提供方超时字符串,例如 seedance timed out after 900s 或 seedance timed out after 1200s。

发生这种情况时,使用相同的已选参考图、相同的节拍结构、duration=15、sound=True 和 quality_mode="pro" 运行 Kling 回退。调用 Kling 前,将提示词中的 @ImageN 标记转换为 <<<image_N>>>。

达到 15 分钟总时长后,遵循上述轮询约定:取消尚未终止的任务并报告失败,不要在原任务可能仍处于活动状态时启动回退。

超时后不要继续重试 Seedance,除非用户明确要求等待 Seedance。超时路径已经耗尽启动演示的墙钟时间预算;切换服务提供方才是文档规定的恢复方式。

回退 — Kling(非音频 partner_validation_failed 或 insufficient_balance):

generate_reference_video(
    provider="kling",
    reference_images=["<url1>", "<url2>", "<url3>", "<url4>", "<url5>"],
    prompt="<prompt using <<<image_1>>> … <<<image_5>>> tokens>",
    quality_mode="pro",   # = 1080p on Kling (NOT resolution=)
    duration=15,
    sound=True,
    aspect_ratio="16:9",
)

Seedance 标记: @Image1 … @Image5 | Kling 标记: <<<image_1>>> … <<<image_5>>>

Seedance 限制:跳过 fast=True,因为它会将分辨率限制在 720p;跳过 negative_prompt,因为 Seedance 不接受此参数;跳过 auto_duration,因为此路径固定为 15s。

Kling 限制:使用 quality_mode="pro" 以获得 1080p;Kling 不接受 resolution=。

Kling 排队/交接恢复

Kling 的回退流程是异步的。如果 generate_reference_video(provider="kling") 返回 task_id,请按照上文的长时间运行轮询约定,持续跟踪任务直至进入终态。

如果 task_status 返回的状态为 queued,且 statusMessage 包含 Worker handoff: task was requeued for retry on another worker.,请将其视为工作线程重启交接,而非渲染失败。继续轮询 task_status(task_id);下一个工作线程应会接手同一任务。

如果 statusMessage 以 Kling is at capacity 开头,请将其视为提供商容量等待。只要 lastUpdatedAt 持续变化,且任务总时长未超过 15 分钟上限,就继续轮询同一任务。

当原任务仍处于 queued 或 running 状态时,不要提交重复的 Kling 请求。重复请求可能消耗提供商配额,并导致产物来源不明确。

如果状态持续 queued 超过 10 分钟,且 lastUpdatedAt 没有变化,请记录 task_id、status、statusMessage 和 lastUpdatedAt,然后继续跟踪同一任务,直到 15 分钟总时长上限。达到 15 分钟总时长后,使用 task_cancel({task_id}) 取消卡住的原任务,并报告失败。此流程中不要重试新的 Kling 请求;更换提供商或在付费调用后重新提交,可能导致重复支出和产物来源不明。


资源上传(本地文件 → 公开 URL)

如果用户提供本地文件路径,请先将其转换为公开 URL,再调用生成工具:

  1. 读取文件大小和 MIME 类型。
  2. 调用 upload_asset(filename, mime_type, size_bytes)。
  3. 使用宿主客户端的文件上传能力,将字节上传至返回的 presigned_url。
  4. 在生成调用中,将返回的 public_url 用作参考 URL。

支持的 MIME 类型:image/png、image/jpeg、image/webp、video/mp4、audio/mpeg、audio/wav


第 4 阶段 — 确定性 COMING SOON 叠加层

不要让 Seedance 或 Kling 渲染 COMING SOON。视频模型容易把新文字渲染得模糊不清, 尤其是全大写的 CTA 文本,因此最后两秒会使用确定性的 COMING SOON 叠加层, 作为后期生成的文字叠加层。

Seedance 或 Kling 返回 15 秒预告片 URL 后,调用:

edit_text_overlay(
    video_url=<generated_teaser_url>,
    text="COMING SOON",
    position="bottom_center",
    font_size=56,
    font_color="white",
    start_s=13,
    end_s=15,
)

如果 edit_text_overlay 返回 { task_id },请轮询 task_status, 直到状态变为 completed、failed 或 cancelled,然后提取返回的 URL。将返回的 URL 保存为 final_url。如果叠加层调用失败,请报告 该失败,并提供未添加叠加层的预告片 URL 作为诊断预览;不要交付 唯一的 COMING SOON 文本由视频模型生成的预告片。


宽高比变体

当用户希望将同一款应用预告片用于 YouTube、Reels/TikTok 和方形动态,而不想为单独生成付费时,可使用可选参数 variants=16:9,9:16,1:1。将旧版 aspect= 保留为单输出的简写;如果指定了 variants,除非用户明确要求只生成一个变体,否则使用原生 16:9 作为源宽高比。

调用一次 generate_reference_video 生成原生 16:9 预告片,然后运行一次 Stage 4 生成 final_url。不要为了额外变体重新运行截图搜集、GPT-image-2 增强、Seedance/Kling 生成或任何其他高成本服务商调用。

final_url 生成后,创建一个扁平的 variant_urls 对象:

{
  "16:9": "<final_url>",
  "9:16": "<edit_reframe url>",
  "1:1": "<edit_reframe url>"
}
  • 对于 16:9,设置 variant_urls["16:9"] = final_url。
  • 对于 9:16 和 1:1,调用 edit_reframe(video_url=final_url, target_aspect="<aspect>", fill_mode="blur"),这样完整的预告片会显示在模糊背景上,而不是从中心裁切。
  • 将 edit_reframe 视为成本较低的最终合成/重新构图阶段。如果重新构图失败,则返回成功的变体 URL,以及失败的宽高比和工具错误;不要重新提交高成本的生成任务。

请注意:变体使用模糊填充。 9:16 和 1:1 会将完整的原生 16:9 预告片显示在模糊背景上。为确保清晰易读,请将关键主体(产品、徽标、标题)置于中央,但不要将这些输出描述为裁切后的变体。

生成后质量检查

在宣布成功之前,调用 analyze_media 检查 final_url,并要求返回结构化评估。如果请求了 variants,则对每个 variant_urls 值执行相同检查,并按宽高比标注警告。

Return JSON only: {
  "verdict": "clean" | "degraded" | "catastrophic",
  "observations": string[],
  "quality_warning": string | null,
  "re_roll_suggestion": string | null
}
Check that COMING SOON is visible and spelled correctly in the final overlay, the brand color is present, the app screen / product screen remains readable, and there are no black frames or wrong-product shots.
  • 如果 verdict 为 clean,则正常返回最终 URL。
  • 如果 verdict 为 degraded,则返回最终 URL 和 quality_warning,以便用户在发布前检查。
  • 如果 verdict 为 catastrophic,则不要将此任务标记为完成;应显示评估结果和 re_roll_suggestion,而不是宣布成功。

交付结果

将最终的 Pika CDN URL 作为主要交付内容返回。如果请求了 variants,则在同一响应中返回扁平的 variant_urls 对象。如果宿主客户端要求本地媒体标记,则先确认 CDN URL 可访问,然后在此技能流程之外创建本地预览。

如果生成以异步方式完成: 持续跟进 MCP 工具返回的状态句柄,直到视频进入终止状态,然后交付最终 URL。


提示词指南

提示词是 Stage 1 + Stage 2 的产物,而不是起点。 切勿凭想象填写模板——应根据你构建的功能图谱和叙事弧线来填写。缺少 Stage 1 分析就编写提示词,只会生成千篇一律的玻璃球体。

摄影机术语

使用具体的摄影机术语——Seedance 能理解这些术语:

术语效果
extreme macro close-up on [specific element]紧凑的细节镜头——玻璃边缘、按钮、图标
crash zoom into [element]快速推近,营造动感
whip pan to带动态模糊的急速横向切镜
orbital sweep around围绕悬浮面板进行 360° 环绕
push-in drift缓慢、富有电影感的推轨
pull-back to reveal经典的产品揭示镜头——展示完整形态
hard cut to black在徽标出现前干净利落地切黑

快速切镜与较慢的镜头漂移交替使用——只有快速切镜会显得混乱,只有缓慢漂移则会显得无聊。

(玻璃变形术语见 references/liquid-glass.md——仅适用于 Template B 路径。)

设备构图

拍摄产品时,将设备固定在纯黑背景中——绝不要将其置于环境中:

# Floating desktop screens (SaaS / desktop apps)
Show the desktop screens floating in 3D space on a pure black background, tilted at
slight angles like a MacBook product shot. The UI elements on screen become translucent
glass with reflections and refractions. No text, no logos, no words.

# iPad reveal
An iPad Pro floating in empty black space, tilted at a cinematic angle like an Apple
product shot. The iPad is a real solid device with visible bezels — only the screen
content has the glass effect. The device slowly rotates. No text, no logos.

# MacBook
A MacBook Pro floating in empty black space, open at a cinematic angle. The screen
displays [content]. Light catches the aluminium edges. No text, no logos.
参考数量指南

所有视频时长均为 15s,分辨率为 1080p。根据叙事弧线选择 3–5 个画面。

参考数量用例
3标准配置——每个节拍使用一个画面(钩子 / 铺垫 / 揭示)+ 图标作为 @Image4
4两个铺垫节拍 + 钩子 + 图标
5功能丰富——钩子 + 3 个铺垫节拍 + 图标。不要超过 5 个。

黄金法则:每约 3 秒视频使用 1 个参考画面。


承载关键含义的短语

这些短语是经过实践验证的提示词 / 流程锚点。简化此技能时请保留:

短语用途关键作用
High quality version, preserve all content exactlyGPT-image-2 增强阶段清理压缩伪影的同时,避免增强阶段凭空生成 UI。
Do NOT write the Seedance prompt until this arc is defined阶段 2.5 的关卡避免生成脱离所选画面的通用动态提示词。
The prompt is the output of Stages 1 + 2, not a starting point提示词编写指南促使 Agent 使用画面特征图和故事弧线,而不是凭空套用模板。
pure black background / floating in empty black space设备构图提示词让产品镜头聚焦于应用 UI,而不是臆想出的环境。
materializes whole / crystallizes as a single form / fades in as a complete elementLogo 揭示用语避免逐字母构建 Logo,以免品牌文字变得乱码。

运行时预期

典型运行时间为 4-8 分钟。首次付费调用 generate_image_edit 进行增强之前的所有生成前阶段,都必须控制在上述 5 分钟限制内。如果无法做到,请停止并报告部分准备结果,不要继续。

步骤耗时备注
资源搜集10-60s通过 fetch_appstore_screens 获取 App Store 画面;网站截图耗时取决于页面加载情况
画面分析 + 弧线设计<=2 min将此阶段限制在最多 2 次提示词 / 分析轮次内
GPT-image-2 增强30-90s只有在仍处于 5 分钟生成前限制内时,才并行处理所选画面
Seedance 生成3-5 min生成音频审核恢复流程会增加一次静音探测,以及一次使用相同种子的声音重放
Kling 回退5-15 min容量等待或工作进程交接可能暂时显示 queued;请遵循 Kling 排队 / 交接恢复手册
下载验证<30s交付前进行本地健全性检查

引擎选择:Seedance 为主,Kling 为备选

Seedance 是默认选择,因为它能很好地处理精致的动态图形参考和 1080p 应用预告片。遇到审核、余额或 Seedance 超时故障时,使用 Kling 作为备选,因为它对某些屏幕内容的限制较少,且使用 quality_mode="pro" 生成 1080p。

故障模式

从 generate_image_edit / generate_reference_video / upload_asset 的上游 5xx 错误中恢复

如果任何付费生成或资源 MCP 调用返回:

  • code: "provider_5xx" 且 retry_class: "retry_after_backoff"
  • 或任何上游服务提供商(OpenAI、Seedance、Kling、存储服务)返回 HTTP 502 / 503 / 504

请执行以下操作:

  1. 等待 5 秒。
  2. 使用完全相同的参数重新调用完全相同的 MCP 工具。不要更改所选画面、提示词文本、种子、sound、服务提供商、图片顺序或上传内容。
  3. 如果重试仍返回 5xx,请中止并向用户说明:“服务提供商两次返回暂时性上游错误。请在 1-2 分钟后重试;此类问题通常会自行消失。”

最多重试一次。不要将 5xx 视为内容或审核问题;重写应用弧线可能会消耗额度,却无法解决服务中断问题。

从上游 4xx / moderation_blocked 中恢复

如果使用 provider="gpt-image-2" 调用 generate_image_edit 增强屏幕截图时返回上游 4xx 或 moderation_blocked:

  1. 不要使用相同的提示词重试;审核拦截和大多数 4xx 验证失败都是确定性的。
  2. 如果不增强也能使用参考图,请跳过增强并使用原始屏幕截图。如果质量太低,只尝试一次备用提供方进行增强;不要更改选定的应用屏幕或 Seedance 提示词。
  3. 如果备用提供方也失败,请向用户说明:“图像提供方拒绝了此屏幕截图增强提示词。请提供更清晰的屏幕截图、裁掉人脸/录制界面,或继续使用原始屏幕截图。”

对于 Seedance 非音频内容政策导致的失败,请使用下文记录的 Kling 备用方案;这是此技能的视频备用提供方路径。

从上游 429(速率限制)中恢复

如果任何上游返回 HTTP 429 并提供退避提示:

  1. 等待提示的退避时间;如果未提供提示,则等待 30 秒。
  2. 使用完全相同的参数,重新调用完全相同的 MCP 工具。
  3. 最多重试一次。如果仍返回 429,请中止并显示速率限制消息,不要提交重复的付费渲染任务。
capture_website 返回空结果 / 页面未加载

如果网站模式调用 capture_website 后返回 200,但 action_bboxes 为空或 recording_viewport 为 0x0:

  1. 不要重试;该网站未能在捕获环境中渲染。
  2. 显示:“无法捕获 。该页面可能被屏蔽/需要付费,或需要身份验证。请提供 3-5 张屏幕截图以及一个徽标/图标。”
upload_asset 网络 / 身份验证失败

如果转换本地屏幕截图、徽标或叠加层以生成托管 URL 时,upload_asset 失败,请勿在 reference_images 或 HTML 中继续使用本地路径。仅在出现上述 5xx 或 429 类错误时重试一次。如果出现 auth_error、不支持的 MIME 类型、网络故障或重复上传失败,请停止并要求用户提供托管的 PNG/JPEG/WebP 资源。

长时间运行的 task_status 超过上限

每次异步 MCP 调用都会返回内联结果或用于轮询的 {task_id, status}。在判断任务卡住之前,请使用以下上限:

  • Seedance i2v:每次调用 10 min
  • Kling fallback:每次调用 15 min
  • gpt-image-2 high quality:每次调用 3 min
  • 上传/编辑/渲染辅助工具:每次调用 5 min

采用以下两者中较早的时间:提供商上限 x 1.5,或任何特定技能的硬性轮询上限,包括上述长时间运行 task_status 轮询约定中的 15 min 总上限。如果 task_status 在较早的上限之后仍返回 status: "processing" 或 status: "queued",请调用 task_cancel({task_id}) 并提示:“提供商耗时异常;正在中止。请重试。”

症状原因修复方法
fast=True 与 resolution="1080p" 同时使用Seedance 将快速模式限制在 720p移除 fast;保留 resolution="1080p"
negative_prompt 被拒绝Seedance 不接受此字段使用正向描述,例如“流畅的动作,稳定的镜头”
Seedance 生成音频审核:content_policy_violation / partner_validation_failed、generated_video、“输出音频包含敏感内容。”对非敏感应用宣传素材的误报较常见按照有上限的生成音频恢复流程操作:使用相同种子进行 sound=False 探测,再使用相同种子进行 sound=True 重试,然后最多进行一次 Kling fallback
Seedance 超时,例如 seedance timed out after ...提供商队列拥塞,或尾部延迟超出工具预算运行 Kling fallback;除非用户明确要求等待,否则不要继续重试 Seedance
视频上的 Seedance partner_validation_failed屏幕内容包含录屏界面、名人面孔或类似审核触发因素切换到 provider="kling",并将令牌转换为 <<<image_N>>>
截图中的人脸触发内容政策截图中包含真实人物上传前裁掉人脸,或使用 Kling
6 张以上参考图导致质量下降模型混合的参考图过多保留 3-5 张参考图,大约每 3 秒一张
忽略提示词末尾内容提示词超过约 200 个单词精简为节拍结构和具体的 UI 细节
输出中的文字乱码要求视频模型渲染新文字将文字保留为参考图中已有的内容;在后期叠加任何新品牌元素
Logo 显现时生成虚构字形“assemble/build/construct”这类措辞会触发逐字形渲染使用“整体显现”、“凝结成一个整体”或“作为完整元素淡入”
任务返回 { task_id } 而不是内联结果长时间运行的生成任务超出了内联预算遵循长时间运行轮询约定:轮询 task_status({task_id}),每 60s 输出进度行,在总计 15 min 时取消并提示,并在完成时提取 result.structuredContent
Kling 任务先前运行过,随后返回状态:queued工作器交接或等待提供商容量遵循 Kling 排队/交接恢复流程及长时间运行轮询约定。不要重复提交;继续轮询,直到任务结束,或在总计 15 min 时取消并提示
Kling 拒绝 resolution=Kling 使用不同的质量参数使用 quality_mode="pro"
App Store 图标 URL 指向宣传图App Store 元数据回退机制找到了功能介绍图片优先使用 fetch_appstore_screens 返回的 icon.url;如果缺失,请索要 Logo/图标文件

评论

支持 Markdown