其他
需要从真实 App Store 截图制作带…
适用于为 iOS App 生成 15 秒电影感 teaser/promo 视频,基于真实 App 截图和品牌 logo/icon,支持 16:9/9:16/1:1 变体,输出带 COMING SOON 叠层。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 39/100 ×0.15
适用场景
需要从真实 App Store 截图制作特定
解决思路
- 在任何付费 MCP 调用前,先调用 identity_balance({verbose: true}) 一次,展示当前余额、最近消耗速率和剩余可用量。
- 用指定消息设置成本门槛:估算典型运行约 3,000-4,000 credits(约 $30-$40),超过 $5,要求用户回复 proceed 继续或 cancel 停止;在用户回复 proceed 前不要调用任何付费 MCP 工具;用户回复 cancel 则停止生成。
- 对于非交互 --quick 或 --config 调用方,要求 config 中包含 cost_ack=proceed;如果缺失,停止并返回成本估算,而不是花费 credits。
- 使用生成契约:resolution=“1080p”、duration=15、sound=True;跳过 fast=true,因为它会把 Seedance 限制在 720p;此 skill 自己掌控时长和声音,用户只提供 App 身份、屏幕、logo 和宽高比。
- 视觉美学从 App 的个性派生,而不是默认 liquid glass;读取 App 图标、截图和分类来判断风格,用户提供 App 身份和素材,agent 决定模式、提示、相机和风格。
- 在必需 App 身份和屏幕/logo 来源可用且成本门槛通过后,skill 启动时开始计时;等待用户 proceed 回复或非交互 cost_ack=proceed 的时间不算准备时间,不能触发此守卫。
- 如果必需输入或真实素材缺失,停在 Stage 0 或 Stage 0.5 并索取;不要绕过硬性素材门槛。
- 对于已有必需输入的运行,第一次付费生成调用必须是 GPT-image-2 的 generate_image_edit 增强,并且必须在 skill 启动后 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.
- 功能图和增强提示最多写 2 轮,然后提交给 generate_image_edit;不要继续打磨增强措辞、屏幕分析或弧线语言;Seedance 提示在增强完成后最多写 2 轮,然后提交给 generate_reference_video。
- 任何长时间生成或编辑调用返回 task_id 时,无论是否带初始状态,或初始状态为 queued、running、processing,都立即记录 task id 和开始时间。
- 用紧密循环调用 task_status({task_id}) 直到终态 completed | failed | cancelled;不要手动 sleep,不要用 Bash 轮询;worker 会保持每次状态调用打开。
- 当状态为 queued、running 或 processing 时,每 60 秒输出一行可见进度:Seedance i2v queued for {N}m {S}s... still processing;轮询 Kling、GPT-image-2、overlay 或 edit 任务时替换 provider/stage 标签。
- 在 completed 时解包返回的结果 URL 并继续。
- 在 failed 或 cancelled 时向用户暴露失败,包含 task_id、状态和最后状态消息。
- 从原始提交起总计 15 分钟后,如果任务仍非终态,调用 task_cancel({task_id}),然后向用户暴露失败;如果取消报告任务已终态,再调用一次 status 并报告该终态结果。
- 原始任务仍处于 queued、running 或 processing 时,不要提交重复请求。
- 主模式使用 generate_reference_video(provider=“seedance”, resolution=“1080p”),参考图像为 3–5 张截图 + App icon/logo 作为最后参考。
- 仅在以下情况回退到 provider=“kling”, quality_mode=“pro”(即 1080p):Seedance 返回非音频 partner_validation_failed(名人脸、录屏 UI);Seedance 返回 insufficient_balance;Seedance 保持 queued/running 直到返回超时如 seedance timed out after ...。
- 不要将生成音频审核当作立即回退 Kling 的理由;先按 Seedance generated-audio moderation recovery runbook 处理。
- Kling 提示使用 <<<image_1>>> … <<<image_5>>> token,而不是 @Image1 … @Image5;去掉 resolution 参数,因为 Kling 使用 quality_mode。
- 如果调用时无参数且无相关上下文,逐字打印菜单并停止;在用户提供 App 身份和屏幕来源前不要调用工具;菜单包含:1 App 名称 + 一句话描述;2 屏幕来源:iOS App Store URL/名称用 fetch_appstore_screens,Web app/网站 URL 用 Pika MCP capture,本地文件/URL 上传;3 品牌 logo 路径或 URL,或跳过使用 App Store icon;4 宽高比 16:9/9:16/1:1,可选 variants=16:9,9:16,1:1。
- 如果触发消息或上下文已提供部分信息,只问缺失的必填字段再调用任何工具;用户只需回答这些,agent 决定模式、提示、相机和风格。
- 用户回答后执行:获取屏幕(MCP App Store fetch / 网站捕获 / 上传本地文件);分析每个屏幕(Stage 1),读取每张截图并映射 UI 到功能;设计叙事弧(Stage 2),在写提示前构建 15 秒故事结构;按叙事角色排序选择 3–5 张最佳屏幕;上传 logo + 屏幕以获取公开 URL;写屏幕特定提示(Template A 或 B);以 1080p 生成。
- Stage 0.5 素材门槛:在调用任何生成工具前,验证真实 App 截图(至少 1 张实际获取图片)和品牌 logo 或应用 icon 都在手。
- 如果缺少截图,停止并索取截图;如果缺少 logo/icon,App Store 来源时使用 fetch_appstore_screens 返回的 icon,否则停止并索取 logo/icon。
- 避免:在预期有真实屏幕时用 text-to-video 替代;在没有真实参考图像时在提示中描述虚构 UI;使用占位符继续;根据名称或描述编造 App 外观;唯一可接受路径是用户提供真实素材;如果 MCP 获取或捕获失败,报告并请用户手动提供,绝不编造。
- 对于包含显眼人物或角色的用户提供素材,在任何付费 generate_image_edit 或 generate_reference_video 调用前运行 Avatar-type probe;App 截图和 App 图标是唯一默认视觉锚点;app-sizzle 不是 founder/creator-face skill,缺失屏幕或 logo 绝不用用户 avatar 填充。
- Avatar-type probe 仅当用户提供的 screen、logo、promo image、mascot、founder photo 或 character asset 包含会成为增强或视频参考的显眼人物/角色时运行;对于普通 App 截图中偶然出现的人脸,优先换一张截图或在上传前裁剪人脸。
- 调用 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.
- Avatar 路由 recognized IP / copyright risk:仅在 avatar_type 为 recognized_ip,或 recognized_character 命名具体角色(例如 Batman),或同时 moderation_risk 为 high 且 recommendation 为 reject 时 STOP;将 recognized_character: null、空字符串、“none”、“unknown”、“n/a” 和 low/medium moderation_risk 视为不足以单独停止;在 real/stylized 路由前运行此检查;chibi Batman 即使 stylized/illustrated 仍是 Batman。
- Avatar 路由 real human / AI-generated realistic:仅当这是合法 App 截图或用户提供的 promo 素材时继续,否则索取 App UI。
- Avatar 路由 stylized / illustrated:继续但显示可见警告,说明风格化角色可能降低 Seedance 可靠性,但不要用它们替代缺失屏幕。
- Avatar 路由 trademarked / copyrighted:生成前 STOP,显示: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 App 截图/logo,而不是用 avatar override 作为屏幕替代。
- iOS App Store 屏幕来源使用 Pika MCP fetch_appstore_screens,不要用本地 scraper;它接受完整 App Store URL、数字 app ID 或应用名搜索词;调用 fetch_appstore_screens(query: <app_store_url | numeric_app_id | search_term>, country: “us”, max_screens: 10, include_icon: true)。
- 期望 fetch_appstore_screens 结果形状包含 app_url、metadata、icon、screenshots、count;如果返回无截图,报告错误并请用户提供 3-5 张真实截图加 logo/icon;不要回退到 Playwright/headless App Store capture,不要编造 UI。
- App Store 素材获取后,选择 3–5 张显示核心 UI 的屏幕;跳过纯文本/启动屏(无 UI)、空白或加载状态、带人脸的屏幕(可能触发内容政策)。
- 屏幕选择原则是最大化视觉对比:每张选中屏幕应尽可能与其他屏幕不同,例如暗 vs 亮背景、UI 密集 vs 照片为主、微距特写 vs 宽网格、极简 vs 繁杂;如果所有屏幕相似,Seedance 会把它们混成视觉糊状;Dazz Cam 成功在于 3D camera grid + Polaroid output + VHS panels + fisheye orb 四个完全不同视觉世界;失败在于同一 UI 略有不同滚动位置的四个屏幕。
- Web App / 网站自动捕获使用 Pika MCP capture_website(url=“https://example.com”, mode=“screenshot”);返回 image_url 直接用作参考;对每个不同页面/视图调用一次。
- 本地文件:用户提供路径后,通过 Pika MCP 上传每个文件,见 Asset Upload。
- Stage 1 App 分析:获取屏幕后,在写任何提示前用 Claude vision 读取每张截图;对每张截图记录显示的 UI(例如 chat input with suggested prompts、video timeline with AI edit chips、agent result card showing a generated clip)、代表的功能(例如 creation entry、agent at work、output/share)、情绪调性(power moment、ease moment、aha moment)。
- 同时从 fetch_appstore_screens 结果或用户描述提取 App metadata:名称、副标题、一句话价值主张、分类和目标用户。
- Stage 1 输出编号功能图:Screen 1 — [filename]: Shows [X UI]. Represents [Y feature]. Moment: [hook/build/reveal].;Screen 2 — ... 等。
- 功能图后对每张屏幕按视觉独特性打分:是否与其他映射屏幕看起来完全不同;偏好不同调色板、不同布局密度、不同主题内容;优秀集合有最大视觉跨度,hook 不应像 build,build 不应像 reveal。
- 在写出 Stage 1 功能图前不要进入 Stage 2。
- Stage 2 叙事架构:每个 15 秒促销需要主线;在接触提示模板前设计故事弧;4 拍结构:Hook 0–3s 抓注意力,展示最戏剧性 UI 时刻或问题,使用最视觉突出的屏幕;Build 3–10s 按逻辑用户旅程顺序进行功能走查,使用 2–3 张屏幕连续;Reveal 10–13s 拉远或产品概览,使用宽镜头或最完整屏幕;Logo 13–15s 品牌锁定,wordmark 整体显现,强调色脉冲,使用 Logo (@Image6 或最后参考);COMING SOON 之后作为生成后文本叠层添加。
- 选择故事弧类型:Problem → Solution 用于生产力/工具 App,Hook=痛点 UI → Build=App 解决 → Reveal=结果;Feature Parade 用于功能丰富 App,Hook=最令人印象深刻功能 → Build=另外 2 个功能 → Reveal=概览;Journey 用于消费/生活方式 App,Hook=入口点 → Build=体验 → Reveal=结果;Transformation 用于前后对比 App,Hook=before → Build=过程 → Reveal=after。
- Stage 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.
- 在定义 Stage 2 弧线前不要写 Seedance 提示。
- Stage 2.5 GPT-Image-2 增强:在弧线定义且选中 3–5 张屏幕后,在上传到 Seedance 前用 GPT-image-2 增强每张。
- 对每张选中屏幕(包括 logo/end card 参考)调用 generate_image_edit(provider=“gpt-image-2”, prompt=“High quality version, preserve all content exactly”, images=[“<original_cdn_url>”], aspect_ratio=“16:9”, quality=“medium”);使用 result.image_url 或 result.url 作为 Seedance 参考。
- 增强规则:保持 prompt 原样,短且非描述性;描述图像内容会让 GPT-image-2 幻觉新细节;aspect_ratio 匹配原始捕获(desktop=16:9, mobile=9:16);并行运行所有增强(每屏一次调用);将增强后的 URL 用作 Seedance 调用的 reference_images 数组,而不是原始 URL;保持 Stage 1 功能图描述不变,因为它们描述原始内容,增强图像会保留。
- Stage 3 提示写作:有了功能图(Stage 1)和弧线(Stage 2),写 Seedance 提示;每个 @Image 描述必须引用功能图中的真实 UI 内容,绝不写“一个带控件的移动界面”这类泛化描述。
- 通过阅读 App 截图选择模板,不要默认 liquid glass;根据 App 个性只读取以下之一,另一个永不加载:Template A — Cinematic Narrative(默认;生产力、AI、创意、社交、食品、游戏):读取 references/template-a-cinematic.md,使用经验证的 BEAT 结构模板加已验证示例;Template B — Liquid Glass(仅摄影、相机、滤镜 App,镜头/滤镜隐喻合适):读取 references/liquid-glass.md,使用 Template B 骨架加玻璃变换词汇;强调色始终来自品牌,读取图标和主 UI 颜色,绝不发明。
- 两个模板规则:每个 @Image 描述直接来自 Stage 1 功能图;相机方向直接来自 Stage 2 弧线;绝不写“the app interface”或“a mobile screen”,要具体;保持少于 200 词;具体性很重要,因为 Seedance 使用 @ImageN 描述作为主要 brief,例如“a dark chat interface” vs “a VHS three-panel grid of city streets, a skate park, and a coastal sunset with retro timestamp overlays”会产生完全不同结果;从 Stage 1 功能图逐字复制最视觉具体的细节。
- Generate Video 主路径 Seedance:调用 generate_reference_video(provider=“seedance”, reference_images=[“<url1>”, “<url2>”, “<url3>”, “<url4>”, “<url5>”], prompt=“<prompt using @Image1 … @Image5 tokens>”, resolution=“1080p”, duration=15, sound=True, aspect_ratio=“16:9”, seed=<int>);设置一个 seed,并在内容政策恢复中重用它。
- Seedance generated-audio moderation recovery:如果 Seedance 完成生成后返回 422,body 包含 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 用完全相同 prompt 和 reference_images、sound=False、相同 seed 重试;2 如果静音探针成功,用完全相同 prompt/reference 集、sound=True、相同 seed 重试;3 如果 sound=True 重放成功,将恢复的有声 URL 路由到 Stage 4 作为 generated_teaser_url,静音探针 URL 仅作调试上下文;4 如果静音探针失败,将失败视为视频/参考审核并使用 Kling 回退;5 如果静音探针成功但 sound=True 重放再次失败,运行 Kling 回退一次;如果 Kling 不可用,将静音 URL 路由到 Stage 4 作为 generated_teaser_url,并明确说明生成音频审核仍不稳定。
- 在生成音频恢复路径中不要更改 prompt、references、aspect ratio、duration 或 seed;更改任何一项会把静音探针变成新生成,而不是测试是否只有生成音频触发审核。
- Seedance timeout recovery:如果 Seedance 在 15 分钟总轮询上限前返回终态超时,将其视为 provider 队列饱和,不是提示/内容失败;不要等待 provider 超时字符串如 seedance timed out after 900s 或 seedance timed out after 1200s。
- Seedance 超时时运行 Kling 回退,使用相同选中参考、相同 beat 结构、duration=15、sound=True、quality_mode=“pro”;在调用 Kling 前将 @ImageN 提示 token 转换为 <<<image_N>>>。
- 在总计 15 分钟时遵循轮询契约:取消非终态任务并暴露失败,而不是在原始任务可能仍活跃时启动回退;除非用户明确要求等待 Seedance,否则不要在超时后继续重试 Seedance;超时路径已花费 launch-demo wall-clock 预算,切换 provider 是文档化恢复。
- Fallback Kling 调用:generate_reference_video(provider=“kling”, reference_images=[“<url1>”, “<url2>”, “<url3>”, “<url4>”, “<url5>”], prompt=“<prompt using <<<image_1>>> … <<<image_5>>> tokens>”, quality_mode=“pro”, duration=15, sound=True, aspect_ratio=“16:9”)。
- Token 与约束:Seedance tokens 是 @Image1 … @Image5;Kling tokens 是 <<<image_1>>> … <<<image_5>>>;Seedance 跳过 fast=True 因为其上限 720p;跳过 negative_prompt 因为 Seedance 拒绝;跳过 auto_duration 因为此路径固定 15s;Kling 使用 quality_mode=“pro” 获得 1080p,Kling 拒绝 resolution=。
- Kling queued/handoff recovery:Kling 回退是异步的;如果 generate_reference_video(provider=“kling”) 返回 task_id,按长时间轮询契约跟进直到终态。
- 如果 task_status 返回 status: queued 且 statusMessage 包含 Worker handoff: task was requeued for retry on another worker.,将其视为 worker 重启交接,不是失败渲染;继续轮询 task_status(task_id),下一个 worker 应重新接管同一任务。
- 如果 statusMessage 以 Kling is at capacity 开头,将其视为 provider 容量等待;在 lastUpdatedAt 继续移动且任务仍低于 15 分钟总上限时,继续轮询同一任务。
- 原始任务仍 queued 或 running 时,不要提交重复 Kling 请求;重复会消耗 provider 配额并使产物来源不清。
- 如果 status 保持 queued 超过 10 分钟且 lastUpdatedAt 无移动,捕获 task_id、status、statusMessage、lastUpdatedAt,然后继续同一任务直到 15 分钟总上限;在总计 15 分钟时,用 task_cancel({task_id}) 取消停滞的原始任务并暴露失败;不要从此路径重试新的 Kling 请求,付费调用后更改 provider 或重新提交会有重复花费和产物来源不清的风险。
- Asset Upload 本地文件到公开 URL:如果用户提供本地文件路径,在调用 generate 前转换为公开 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。
- Stage 4 确定性 COMING SOON 叠层:不要要求 Seedance 或 Kling 渲染 COMING SOON;视频模型会搞乱新排版,尤其全大写 CTA 文本,所以最后两秒使用确定性 COMING SOON overlay 作为生成后文本叠层。
- 在 Seedance 或 Kling 返回 15s teaser 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;如果 overlay 调用失败,暴露该失败和未叠加的 teaser URL 作为诊断预览;不要交付唯一 COMING SOON 文本由视频模型生成的 teaser。
- Aspect-ratio variants:当用户希望同一 App teaser 用于 YouTube、Reels/TikTok 和方形 feed 而不为单独生成付费时,使用可选 variants=16:9,9:16,1:1;保留 legacy aspect= 作为单输出简写;存在 variants 时,除非用户明确只要一个变体,否则使用原生 16:9 作为源宽高比。
- 调用 generate_reference_video 一次生成原生 16:9 teaser,然后运行 Stage 4 一次产生 final_url;不要为额外变体重新运行截图获取、GPT-image-2 增强、Seedance/Kling 生成或任何其他昂贵 provider 调用。
- 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”),使完整 teaser 在模糊背景上保持可见,而不是中心裁剪。
- 将 edit_reframe 视为便宜的最终合成/重构图阶段;如果某个 reframe 失败,返回成功变体 URL 加失败 aspect 和工具错误;不要重新提交昂贵生成。
- variants 使用 blur fill;9:16 和 1:1 保持完整原生 16:9 teaser 在模糊背景上可见;保持关键主体(产品、logo、标题)居中以便可读,但不要将这些输出描述为裁剪变体。
- Post-flight quality gate:声明成功前,对 final_url 调用 analyze_media 并要求结构化判定;如果请求了 variants,对每个 variant_urls 值运行相同门槛,并按宽高比标记任何警告。
- quality gate 要求返回 JSON only:{ “verdict”: “clean” | “degraded” | “catastrophic”, “observations”: string[], “quality_warning”: string | null, “re_roll_suggestion”: string | null };检查 COMING SOON 在最终叠层中可见且拼写正确,品牌色存在,App 屏幕/产品屏幕保持可读,无黑帧或错误产品镜头。
- quality gate 路由:如果 verdict 为 clean,正常返回最终 URL;如果为 degraded,返回最终 URL 加 quality_warning 让用户发布前审查;如果为 catastrophic,不要调用运行完成,暴露 verdict 和 re_roll_suggestion,而不是宣告成功。
- Result Delivery:返回最终 Pika CDN URL 作为主要交付物;如果请求了 variants,在同一响应返回扁平 variant_urls 对象;如果宿主客户端需要本地媒体标记,在确认 CDN URL 可访问后,在此 skill 流程之外创建本地预览;如果生成异步完成,按 MCP 工具返回的状态句柄跟进直到视频到达终态,然后交付最终 URL。
- Prompting Guide:提示是 Stages 1 + 2 的输出,不是起点;绝不从想象填充模板,从你构建的功能图和弧线填充;没有 Stage 1 分析写的提示会产生通用玻璃团。
- Camera Vocabulary:使用具体相机语言,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 表示 logo 前干净节拍;交替快切与慢速推拉,纯快速切换感觉混乱,纯慢速推拉感觉无聊。
- Device Framing 产品镜头:将设备锁定到黑色虚空,绝不放置在环境中;浮动桌面屏幕(SaaS/桌面 App)用: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 揭示用: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.
- Reference Count Guide:所有运行都是 15s、1080p;根据叙事弧选择 3–5 张屏幕;3 张用于标准,每拍一张屏幕(hook/build/reveal)+ icon 作为 @Image4;4 张用于两个 build 拍 + hook + icon;5 张用于功能丰富,hook + 3 个 build 拍 + icon;不要超过 5;黄金法则是每约 3 秒视频 1 个参考。
- Load-bearing phrases:保留这些短语:High quality version, preserve all content exactly;Do NOT write the Seedance prompt until this arc is defined;The prompt is the output of Stages 1 + 2, not a starting point;pure black background / floating in empty black space;materializes whole / crystallizes as a single form / fades in as a complete element。
- Runtime Expectations:典型运行时间 4-8 分钟;首次付费 generate_image_edit 增强调用前的所有预生成阶段必须适合 5 分钟守卫内;如果不符合,停止并报告部分准备而不是继续;步骤时间参考:Asset sourcing 10-60s;Screen analysis + arc <=2 min;GPT-image-2 enhancement 30-90s;Seedance generation 3-5 min;Kling fallback 5-15 min;Download verification <30s。
- Engine Choice:Seedance 默认,因为处理 polished motion-graphics references 和 1080p app teasers 好;Kling 回退用于审核、余额或 Seedance 超时失败,因为对某些屏幕内容更宽松,并使用 quality_mode=“pro” 获得 1080p。
- Recovering from upstream 5xx on generate_image_edit / generate_reference_video / upload_asset:如果任何付费生成或资产 MCP 调用返回 code: “provider_5xx” 且 retry_class: “retry_after_backoff”,或来自任何上游 provider(OpenAI、Seedance、Kling、storage)的 HTTP 502/503/504:1 等待 5 秒;2 用完全相同参数重新调用完全相同的 MCP 工具;不要更改选中屏幕、提示文本、seed、sound、provider、图像顺序或上传载荷;3 如果重试也 5xx 失败,中止并向用户显示:Provider returned a transient upstream error twice. Try again in 1-2 minutes; this usually clears on its own.;不要重试超过一次;不要把 5xx 当作内容或审核问题;重写 App 弧线可能花费 credits 而不解决故障。
- Recovering from upstream 4xx / moderation_blocked:如果 generate_image_edit 用 provider=“gpt-image-2” 返回上游 4xx 或 moderation_blocked 增强截图时:1 不要重试相同提示;审核和大多数 4xx 验证失败是确定性的;2 如果参考无需增强仍可用,跳过增强并使用原始屏幕;如果质量太低,仅对增强尝试一次回退 provider,不要改变选中 App 屏幕或 Seedance 提示;3 如果回退 provider 也失败,向用户显示:Image provider declined this screenshot-enhancement prompt. Provide cleaner screenshots, crop faces/recording UI, or continue with the original screens.;对于 Seedance 非音频内容政策失败,使用文档化 Kling 回退,这是此 skill 的视频回退 provider 路径。
- Recovering from upstream 429 (rate limit):如果任何上游返回 HTTP 429 并带退避提示:1 等待提示的退避,或无提示则 30 秒;2 用完全相同参数重新调用完全相同的 MCP 工具;3 不要重试超过一次;如果仍返回 429,中止并暴露速率限制消息,而不是提交重复付费渲染。
- capture_website returning empty / page-not-loaded:如果网站模式调用 capture_website 返回 200 但 action_bboxes 为空或 recording_viewport 为 0x0:1 不要重试,站点在捕获环境渲染失败;2 显示:Could not capture <url>. The page may be blocked / paywalled / require auth. Please provide 3-5 screenshots and a logo/icon instead.
- upload_asset network / auth failure:如果 upload_asset 在将本地屏幕、logo 或 overlays 转换为托管 URL 时失败,不要继续在 reference_images 或 HTML 中使用本地路径;仅对 5xx 或 429 类重试一次;对于 auth_error、不支持的 MIME、网络失败或重复上传失败,停止并请求托管的 PNG/JPEG/WebP 资产。
- Long-running task_status exceeding ceiling:每个异步 MCP 调用返回内联结果或 {task_id, status} 用于轮询;在判定任务卡住前使用这些上限:Seedance i2v 10 min per call;Kling fallback 15 min per call;gpt-image-2 high quality 3 min per call;Upload/edit/render helpers 5 min per call;使用较早者:provider 的上限 x 1.5 或任何 skill 特定硬轮询上限,包括长期 task_status polling contract 中的 15 分钟总上限;如果 task_status 返回 status: “processing” 或 status: “queued” 超过该较早限制,调用 task_cancel({task_id}) 并显示:Provider taking unusually long; aborting. Try again.
- 故障表:fast=True 与 resolution=“1080p” 同时出现时,移除 fast,保持 resolution=“1080p”;negative_prompt 被拒绝时,使用正向表述如 smooth motion, stable camera;Seedance generated-audio moderation 时,按有上限的生成音频恢复 runbook;Seedance timeout 时,运行 Kling 回退,除非用户明确要求等待,否则不要继续重试 Seedance;Seedance partner_validation_failed on video 时,切换到 provider=“kling” 并转换 token 为 <<<image_N>>>。
- 故障表续:截图中人脸触发内容政策时,上传前裁剪人脸,或使用 Kling;6+ 参考图像降低质量时,保持 3-5 个参考,约每 3 秒一个;提示尾部被忽略时,如果提示超过约 200 词,裁到 beat 结构和具体 UI 细节;输出文本乱码时,新文本保留为现有参考图像内容,任何新品牌在后期叠加;Logo 揭示幻觉字形时,使用 materializes whole、crystallizes as a single form、fades in as a complete element。
- 故障表续:任务返回 { task_id } 而非内联时,遵循长时间轮询契约:轮询 task_status({task_id}),每 60s 输出进度行,15 分钟总上限时取消/暴露,并在完成时解包 result.structuredContent;Kling 任务在 previously running 后返回 status: queued 时,遵循 Kling queued/handoff recovery runbook 和长时间轮询契约,不要提交重复,持续轮询直到终态或 15 分钟总上限取消/暴露;Kling 拒绝 resolution= 时,使用 quality_mode=“pro”;App Store icon URL 指向 promo art 时,优先 fetch_appstore_screens 返回的 icon.url,若缺失则索取 logo/icon 文件。
适用边界 · 注意事项
- 不适用于 GRWM、vlogs、UGC 等短视频消费者内容,或非 App 产品广告;这些应使用 content-video。
- 不适用于没有真实 App 截图和 logo/icon 的情况;不能用 text-to-video、占位符或虚构 UI 替代真实素材。
- 依赖 Pika MCP、GPT-image-2、Seedance/Kling、identity_balance 等特定/付费能力;不满足这些工具或账号条件时不要使用。