{"id":"306010fa-df10-4f7d-84c5-baafc6e247a0","entityType":"agent","slug":"clawhub-sun-guannan-vectcut","name":"VectCut: The first \"To-Agent\" video editing platform. Build automated video workflows with our stable cloud APIs in Coze, Dify, or OpenClaw.","canonicalUrl":"https://www.xpersona.co/agent/clawhub-sun-guannan-vectcut","canonicalPath":"/agent/clawhub-sun-guannan-vectcut","generatedAt":"2026-10-10T02:20:27.687Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T11:53:29.618Z","emptyReason":null},"description":"VectCut 全能剪辑聚合技能。用于剪口播、混剪、电商广告等场景，统一编排流光剪辑能力（字幕、音频、特效、画中画、抠像、AI补镜、AI配音、预设、平台视频抓取、渲染导出），也支持把既有视频制作流程整理为飞书多维表格自动化工作流。当用户提出“做成片/自动剪辑/口播包装/广告剪辑/抓平台视频后再剪”，或想把视频制作...","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.7K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17107k9vveeepkvadztdn0ccs83tvkg:vectcut","sourceUrl":"https://clawhub.ai/sun-guannan/vectcut","homepage":"https://clawhub.ai/sun-guannan/skills/vectcut","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/sun-guannan/vectcut","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/sun-guannan/skills/vectcut","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"VectCut: The first \"To-Agent\" video editing platform. Build automated video workflows with our stable cloud APIs in Coze, Dify, or OpenClaw. technical dossier o"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T11:53:29.618Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T11:53:29.618Z","emptyReason":null},"stars":null,"forks":null,"downloads":2737,"packageName":null,"latestVersion":"1.5.11","tractionLabel":"2.7K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T11:53:29.618Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T11:53:29.618Z","lastCrawledAt":"2026-10-09T11:53:29.618Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T11:53:29.618Z","lastVerifiedAt":null,"highlights":[{"version":"1.5.11","createdAt":"2026-05-25T02:16:44.303Z","changelog":"No changes detected in this release. - Version 1.5.11 contains no file changes compared to the previous version. - Behavior, features, and documentation remain unchanged.","fileCount":70,"zipByteSize":170234},{"version":"1.5.10","createdAt":"2026-05-18T04:28:31.748Z","changelog":"- 新增 feishu-bitetable-creator 支持，把视频制作流程固化为飞书多维表格自动化工作流，并输出字段结构及 AI Agent 提示词 - 删除 scripts/search_vectcut_api.py，推荐全部接口能力都由 vectcut-api-search 统一承接 - 明确所有 VECTCUT_API_KEY 的环境变量检查须用 Bash 命令实现，支持 Windows - 触发场景、前置规则和路由策略全面加强飞书多维表格相关内容，并新增文字添加分流规则 - 更新部分步骤细节与参数估算，使执行链路更贴合实际接口能力","fileCount":69,"zipByteSize":168386},{"version":"1.5.9","createdAt":"2026-05-10T08:50:42.918Z","changelog":"- 新增“预设片段”功能，通过 add-preset 支持预设片段替换和复杂包装效果组合。 - 新增“草稿一键下载/拉取”功能，draft-downloader 支持单个或批量打开 dfd_cat_ 草稿到客户端。 - 丰富混剪/口播场景及用户输入意图匹配，自动识别并优先使用标准链路（如“混剪在一起”自动走 video-voiceover-remix）。 - 强化 draft_id 的统一传递与多步骤编排逻辑，确保字幕和音频等操作落在同一草稿上。 - 更新场景路由、输出规则与目录索引，全面覆盖新增能力。","fileCount":69,"zipByteSize":164248},{"version":"1.5.8","createdAt":"2026-04-27T01:54:07.118Z","changelog":"**Summary: Introduced a dedicated“视频配音混剪”混剪子链路，新增规则与脚本支持。** - 新增视频配音混剪规则文档（rules/video-voiceover-remix.md） - 增加混剪链路的 4.1 子链路“video-voiceover-remix”，包含固定七步流程 - 默认指定配音音色和文案字数估算方式，并提示可查官网获取音色 - 混剪二步重排支持调用内置脚本 scripts/remix_and_add_videos.py - 新增相关脚本文件和 pyc 缓存文件以支持流程自动化","fileCount":65,"zipByteSize":154236},{"version":"1.5.7","createdAt":"2026-04-19T08:24:13.228Z","changelog":"- 新增 cut-koubo-template 模板口播编排链路支持，适用于固定风格和降低不确定性的场景 - 口播成片场景新增“模板稳定链”，严格校验模板参数，定制化输出 - 目录索引补充 cut-koubo-template 规则文档 - 完善模板链路的草稿生成、首帧处理与用户交互说明","fileCount":63,"zipByteSize":149409},{"version":"1.5.6","createdAt":"2026-04-19T06:53:10.178Z","changelog":"Version 1.5.6 - Added references/ai-image-model_capabilities.json to the project files. - No changes to main logic or user-facing documentation.","fileCount":62,"zipByteSize":146898},{"version":"1.5.5","createdAt":"2026-04-19T04:17:29.778Z","changelog":"- Refactored script organization: moved all script files from nested directories to a flat top-level scripts/ directory. - Removed legacy scripts in subfolders; corresponding new scripts added directly under scripts/. - No changes to documented user scenarios or rules in SKILL.md.","fileCount":61,"zipByteSize":145691},{"version":"1.5.3","createdAt":"2026-04-19T04:12:42.924Z","changelog":"- Centralized and reorganized reference files for BGM, effect audio, model capabilities, and cover prompts into a single references directory. - Removed duplicate and dispersed reference files from feature-specific subdirectories. - No user-facing logic or behavior changes; update only affects internal file structure and data management.","fileCount":61,"zipByteSize":146587}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17107k9vveeepkvadztdn0ccs83tvkg:vectcut","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17107k9vveeepkvadztdn0ccs83tvkg:vectcut` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/sun-guannan/vectcut before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sun-guannan-vectcut/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sun-guannan-vectcut/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sun-guannan-vectcut/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-sun-guannan-vectcut/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-sun-guannan-vectcut/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-sun-guannan-vectcut/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T02:20:27.684Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sun-guannan-vectcut/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sun-guannan-vectcut/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sun-guannan-vectcut/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sun-guannan-vectcut/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T11:53:29.618Z","emptyReason":null},"readme":"Skill: VectCut: The first \"To-Agent\" video editing platform. Build automated video workflows with our stable cloud APIs in Coze, Dify, or OpenClaw.\n\nOwner: sun-guannan\n\nSummary: VectCut 全能剪辑聚合技能。用于剪口播、混剪、电商广告等场景，统一编排流光剪辑能力（字幕、音频、特效、画中画、抠像、AI补镜、AI配音、预设、平台视频抓取、渲染导出），也支持把既有视频制作流程整理为飞书多维表格自动化工作流。当用户提出“做成片/自动剪辑/口播包装/广告剪辑/抓平台视频后再剪”，或想把视频制作...\n\nTags: latest:1.5.11\n\nVersion history:\n\nv1.5.11 | 2026-05-25T02:16:44.303Z | user\n\nNo changes detected in this release.\n\n- Version 1.5.11 contains no file changes compared to the previous version.\n- Behavior, features, and documentation remain unchanged.\n\nv1.5.10 | 2026-05-18T04:28:31.748Z | user\n\n- 新增 feishu-bitetable-creator 支持，把视频制作流程固化为飞书多维表格自动化工作流，并输出字段结构及 AI Agent 提示词\n- 删除 scripts/search_vectcut_api.py，推荐全部接口能力都由 vectcut-api-search 统一承接\n- 明确所有 VECTCUT_API_KEY 的环境变量检查须用 Bash 命令实现，支持 Windows\n- 触发场景、前置规则和路由策略全面加强飞书多维表格相关内容，并新增文字添加分流规则\n- 更新部分步骤细节与参数估算，使执行链路更贴合实际接口能力\n\nv1.5.9 | 2026-05-10T08:50:42.918Z | user\n\n- 新增“预设片段”功能，通过 add-preset 支持预设片段替换和复杂包装效果组合。\n- 新增“草稿一键下载/拉取”功能，draft-downloader 支持单个或批量打开 dfd_cat_ 草稿到客户端。\n- 丰富混剪/口播场景及用户输入意图匹配，自动识别并优先使用标准链路（如“混剪在一起”自动走 video-voiceover-remix）。\n- 强化 draft_id 的统一传递与多步骤编排逻辑，确保字幕和音频等操作落在同一草稿上。\n- 更新场景路由、输出规则与目录索引，全面覆盖新增能力。\n\nv1.5.8 | 2026-04-27T01:54:07.118Z | user\n\n**Summary: Introduced a dedicated“视频配音混剪”混剪子链路，新增规则与脚本支持。**\n\n- 新增视频配音混剪规则文档（rules/video-voiceover-remix.md）\n- 增加混剪链路的 4.1 子链路“video-voiceover-remix”，包含固定七步流程\n- 默认指定配音音色和文案字数估算方式，并提示可查官网获取音色\n- 混剪二步重排支持调用内置脚本 scripts/remix_and_add_videos.py\n- 新增相关脚本文件和 pyc 缓存文件以支持流程自动化\n\nv1.5.7 | 2026-04-19T08:24:13.228Z | user\n\n- 新增 cut-koubo-template 模板口播编排链路支持，适用于固定风格和降低不确定性的场景\n- 口播成片场景新增“模板稳定链”，严格校验模板参数，定制化输出\n- 目录索引补充 cut-koubo-template 规则文档\n- 完善模板链路的草稿生成、首帧处理与用户交互说明\n\nv1.5.6 | 2026-04-19T06:53:10.178Z | user\n\nVersion 1.5.6\n\n- Added references/ai-image-model_capabilities.json to the project files.\n- No changes to main logic or user-facing documentation.\n\nv1.5.5 | 2026-04-19T04:17:29.778Z | user\n\n- Refactored script organization: moved all script files from nested directories to a flat top-level scripts/ directory.\n- Removed legacy scripts in subfolders; corresponding new scripts added directly under scripts/.\n- No changes to documented user scenarios or rules in SKILL.md.\n\nv1.5.3 | 2026-04-19T04:12:42.924Z | user\n\n- Centralized and reorganized reference files for BGM, effect audio, model capabilities, and cover prompts into a single references directory.\n- Removed duplicate and dispersed reference files from feature-specific subdirectories.\n- No user-facing logic or behavior changes; update only affects internal file structure and data management.\n\nv1.5.2 | 2026-04-19T04:04:10.071Z | user\n\nNo changes detected in this version.\n\n- No file or documentation updates found for version 1.5.2.\n- Functionality and usage remain the same as the previous release.\n\nv1.5.0 | 2026-04-19T03:59:48.778Z | user\n\nMajor update: standardized skill聚合 and streamlined documentation for easier orchestration.\n\n- 全面重写 SKILL.md，转向聚合编排式说明与场景/接口路由，聚焦用户视角与高频需求。\n- 精简并移除大量 legacy 文件、用例、旧 endpoint 说明，仅保留规则、参考与 API search 功能。\n- 新增或整理 20+ 规则文档与引用样例，覆盖主流剪辑能力、API路由与通用问题自查。\n- 输出要求更清晰：链路执行摘要、失败追踪、必要字段结构化输出等。\n- 明确环境变量检查与自动 API search 兜底逻辑，提升易用性与故障自愈能力。\n\nv1.1.9 | 2026-03-29T09:23:07.145Z | user\n\n**Vectcut v1.1.9** — Major feature expansion\n\n- 新增 file_manager、koubo、scrapt、subtitle_template 四大能力域，包含规则、端点、脚本、提示与样例，显著提升字幕模版、口播模版、爬虫解析及文件上传管理能力\n- 新增 32 个文件，完善领域内参考文档（prompt、rules、reference）、curl 示例与执行脚本，丰富开发与验证工具链\n- 优化 generate_ai_video、tts_generate、generate_ai_image 端点参数和输出格式，提升通用性和易用性\n- 拆分/规范能力域文档索引，完善领域说明与枚举引用，提升可维护性\n- 移除冗余枚举文件 references/enums/text_outro_anims copy.json\n\nv1.1.6 | 2026-03-22T13:51:26.163Z | user\n\nvectcut-skill 1.1.6\n\n- No code or documentation changes detected in this version.\n- No updates were made to the SKILL.md or other files.\n\nv1.1.5 | 2026-03-22T11:39:51.666Z | user\n\n- 增加了主页地址和 Openclaw 兼容元数据（homepage, emoji, requires, primaryEnv 字段）。\n- 明确声明依赖的环境变量 VECTCUT_API_KEY。\n- 其他内容未变，无代码或核心功能修改。\n\nv1.1.3 | 2026-03-22T09:23:15.242Z | user\n\n**Major upgrade focused on modularity, scripted orchestration, and advanced autonomous video planning.**\n\n- Re-architected skill for modular “能力域” (domain) structure, with rules, params, prompts, scripts, and examples per domain.\n- Introduced autonomous video planning logic: AI can analyze content, plan script structure, and manage the full editing workflow.\n- Added many demo scripts and modular prompt/rules/references directories; removed old hardcoded prompt/reference assets.\n- Enhanced support for ASR, AI-generated media (image, video, voice), digital human, and keyframe editing, with clear execution order and output conventions.\n- Streamlined environment configuration and interaction conventions for user clarity and scriptability.\n\nv1.0.0 | 2026-03-05T03:00:00.541Z | user\n\nvectcut-skill 1.0.0 初始发布：\n\n- 封装 curl 调用 HTTP API，自动化创建并编排剪映/CapCut 草稿、素材、字幕、特效和渲染任务。\n- 支持一站式视频草稿创建、素材与时间线编辑、AI 生图/配音、智能抠像和批量生产等多种视频生产流程。\n- 提供丰富接口：添加/编辑各类素材、拉取动画/特效/滤镜/字体等可用枚举、发起云渲染并实时查询渲染状态。\n- 输出规范化结果，便于后续流程自动衔接（含 draft_id, draft_url, task_id）。\n- 适合批量自动化视频制作和 AI 驱动的短视频生成场景。\n\nArchive index:\n\nArchive v1.5.11: 70 files, 170234 bytes\n\nFiles: references/ai-image-model_capabilities.json (10444b), references/bgms.json (946b), references/cover_prompt_references.md (4610b), references/effect_audios.json (792b), references/model_capabilities.json (1589b), rules/add-bgm.md (3180b), rules/add-effect_audio.md (3093b), rules/add-effect.md (3440b), rules/add-preset.md (3493b), rules/add-subtitle-template.md (11561b), rules/add-title.md (2295b), rules/asr-vad.md (5309b), rules/cloud-render.md (2870b), rules/cut-koubo-template.md (8151b), rules/cut-koubo.md (15377b), rules/describe-video.md (4594b), rules/draft-downloader.md (2595b), rules/extract-audio.md (2079b), rules/feishu-bitetable-creator.md (11621b), rules/generate-ai-image.md (3818b), rules/generate-ai-video.md (2338b), rules/generate-cover.md (7184b), rules/human-pip.md (3867b), rules/llm-asr.md (5594b), rules/modify-draft.md (1739b), rules/query-draft.md (5274b), rules/scrapt-video.md (2727b), rules/speech-synthesis.md (2389b), rules/split-video.md (3097b), rules/sts-upload.md (3067b), rules/text-background.md (3612b), rules/text-keywords.md (4513b), rules/vectcut-api-search.md (1944b), rules/vectcut-login.md (2278b), rules/video-voiceover-remix.md (3215b), rules/zoom-in-out.md (3335b), scripts/add_bgm.py (8853b), scripts/add_effect_audio.py (7091b), scripts/add_effect.py (9762b), scripts/add_preset.py (3446b), scripts/add_title.py (4255b), scripts/apply_subtitle_template.py (9451b), scripts/asr_vad.py (8470b), scripts/cloud_render.py (3719b), scripts/describe_video.py (43676b), scripts/draft_downloader.py (4501b), scripts/extract_audio_async.py (4763b), scripts/generate_ai_image_async.py (9759b), scripts/generate_ai_video_async.py (8564b), scripts/human_pip_async.py (6246b), scripts/llm_asr_async.py (10652b), scripts/modify_draft.py (1879b), scripts/query_draft.py (1829b), scripts/remix_and_add_videos.py (7990b), scripts/scrapt_video.py (8592b), scripts/split_video_async.py (6874b), scripts/sts_upload.py (3716b), scripts/template_bilingual_keyword.py (36345b), scripts/template_dual_track_motion.py (16076b), scripts/template_karaoke_highlight.py (16617b), scripts/template_preset_transition.py (16122b), scripts/template_roll_focus.py (18402b), scripts/template_slide_in_out.py (4226b), scripts/template_word_pop.py (20763b), scripts/text_background_async.py (6422b), scripts/vectcut_login.py (2758b), scripts/zoom_in_out.py (16362b), skill-card.md (2902b), SKILL.md (9035b), _meta.json (127b)\n\nFile v1.5.11:SKILL.md\n\n---\nname: vectcut-skill\ndescription: \"VectCut 全能剪辑聚合技能。用于剪口播、混剪、电商广告等场景，统一编排流光剪辑能力（字幕、音频、特效、画中画、抠像、AI补镜、AI配音、预设、平台视频抓取、渲染导出），也支持把既有视频制作流程整理为飞书多维表格自动化工作流。当用户提出“做成片/自动剪辑/口播包装/广告剪辑/抓平台视频后再剪”，或想把视频制作流程固化为飞书多维表格 AI Agent 工作流时，必须优先使用本技能。\"\nhomepage: \"https://www.vectcut.com/\"\nmetadata:\n  openclaw:\n    emoji: \"🎬\"\n    requires:\n      env: [\"VECTCUT_API_KEY\"]\n    primaryEnv: \"VECTCUT_API_KEY\"\ndependency:\n---\n\n## 触发场景\n\n- 口播自动成片、网感剪辑、去气口重排、口播包装\n- 混剪视频（多素材重组、节奏强化、字幕动画、转场特效）\n- 用户口语表达“混剪在一起 / 拼在一起 / 合成一条 / 随机拼接”这类意图\n- 电商广告（卖点强化、人物抠像、画中画、关键词强调、提示音）\n- 需要基于“预设片段”替换素材、组合复杂包装效果（如把 `text1` 改为指定文案）\n- 需要“抓取抖音/快手/小红书/B站/TikTok/YouTube 链接后分析并剪辑”\n- 想要查看VectCut 流光剪辑的API都支持哪些功能，具体API怎么使用。\n- 需要“AI 补镜 / AI 生成图片或视频 / AI 配音 / 云渲染导出”\n- 已有 `dfd_cat_` 草稿 ID，希望一键拉取到客户端（单个或批量）\n- 想把刚整理好的视频生产链路固化为飞书多维表格工作流，输出字段结构和 AI Agent 提示词\n\n## 统一前置规则（沿用）\n\n1. 任何 VectCut 调用前，先检查环境变量 `VECTCUT_API_KEY`（检查环境变量，不是本地配置文件）。默认通过 Bash 工具执行命令，包括windows环境也是。例如 `echo \"$VECTCUT_API_KEY\"` 或 `printenv VECTCUT_API_KEY` 来判断。\n2. 缺失、为空或鉴权失败时，先调用 `vectcut-login`\n3. 在进入任何具体技能链路前，优先先调用 `vectcut-api-search` 做一次全局能力扫描；因为它覆盖 VectCut 全量 API 索引、文件体量小、负担低，可以先快速掌握当前有哪些可用功能与接口入口\n4. 需要“在已有草稿继续编辑”时，输入参数必须显式携带 `draft_id`，并在后续所有写入接口（如 `add_video/add_audio/execute_workflow`）中持续透传同一个 `draft_id`\n5. 未传 `draft_id` 时，服务端通常会新建草稿；禁止在同一任务中混用多个草稿（避免字幕、音频落到不同草稿）\n6. 输入是本地素材路径时，先调用 `sts-upload` 转公网 URL 再继续\n7. 关键节点后调用 `query-draft` 做草稿校验\n8. 接口参数不确定、需要选型或报错时，用 `vectcut-api-search` 查询最新文档再修正；即使没有报错，也鼓励先用它确认是否已有更合适的现成接口\n## 场景路由策略（聚合编排）\n\n1. **平台链接输入**\n- 先走 `scrapt-video` 抓取视频信息与直链\n- 自动衔接 `describe-video` 做字幕+画面分析\n- 再按用户目标进入口播链、混剪链或广告链\n\n2. **口播成片（模板稳定链，默认优先）**\n- 口播成片默认优先走 `cut-koubo-template`（无需用户显式提及“模板”）\n- 去气口也属于口播剪辑场景，默认同样优先走 `cut-koubo-template`\n- 输入按模板接口严格校验（不同模板的必填参数不同，如 `title` 或 `kongjing_urls`）\n- 通过官方 `submit_agent_task` 固定链路出草稿，随后调用 `generate-cover`，并询问用户是否执行 `prepend_image` 插入首帧\n\n3. **口播成片（回退主链）**\n- 仅在模板链不适配（如模板必填参数无法满足）或用户明确要求开放式重排编排时，走 `cut-koubo`（包括去气口场景）\n- 最后可选 `cloud-render`\n\n4. **混剪链路**\n- `describe-video` 做素材盘点\n- `split-video` 切片重组\n- `add-subtitle-template` 字幕上屏（仅限已有字幕或需先从音视频生成字幕的场景）\n- `add-effect` / `zoom-in-out` 强化节奏\n- `add-bgm` + `add-effect_audio` 收口\n- `cloud-render` 导出\n\n4.1 **混剪配音成片（video-voiceover-remix 子链路）**\n- 触发词与同义表达：`混剪在一起`、`拼在一起`、`合成一条`、`随机拼接`、`多段视频组合`\n- 当用户只说“混剪在一起”且未给更细约束时，默认优先路由到 `video-voiceover-remix`，并在执行前简短告知将采用“混剪+解说+字幕+BGM”标准链路\n- 先按 `rules/video-voiceover-remix.md` 执行固定七步：`describe-video` -> `add_video(volume=-100)` -> 基于 `describe-video` 结果生成文案 -> `speech-synthesis + add_audio(volume=20)` -> `llm-asr(nlp) + add-subtitle-template` -> `add-bgm` -> `add-effect_audio`\n- 第 2 步重排优先调用内置脚本：`scripts/remix_and_add_videos.py`\n- 第 3 步文案字数按每秒 5 字估算\n- 第 4 步默认音色：`voice_id=gv_8195cd8b03f74658a9d92c9b2a9e9cba`，并提示用户可到 VectCut 官网查看可用音色\n\n5. **电商广告链路**\n- 人物突出优先：`human-pip` 或 `text-background`\n- 卖点强调：`text-keywords` + `add-title`\n- 素材不足：`generate-ai-image` / `generate-ai-video`\n- 配音需求：`speech-synthesis`\n- 包装完成后最终 `cloud-render`\n\n6. **草稿下载链路**\n- 用户提供一个或多个 `dfd_cat_` 草稿 ID 时，调用 `draft-downloader`\n- 先做去空、去重与 `dfd_cat_` 前缀校验，再触发 deeplink：`vectcut://download?draft_id=...`\n- 适合“下载草稿”“打开草稿到客户端”“批量拉取草稿”的需求\n\n7. **纯文字添加分流**\n- 用户只是要“添加一段文字/标题/说明文案/标签/贴纸文案”时，不要路由到 `add-subtitle-template`\n- 这类请求不是“字幕生成后上屏”链路，应先调用 `vectcut-api-search` 查找最新合适接口\n- 若语义明确是固定标题位，可进一步落到 `add-title`\n- 若是普通文字轨、动态文字或参数不确定，先以 `vectcut-api-search` 结果为准再执行\n\n8. **飞书多维表格工作流固化**\n- 当用户想把“刚才的视频制作流程”沉淀成飞书多维表格自动化时，路由到 `feishu-bitetable-creator`\n- 输入可以是自动化代码脚本，也可以是多轮对话摘要\n- 输出必须同时包含：`多维表格字段结构` 与 `飞书多维表格 AI Agent 工作流提示词`\n- 在工作流提示词里，几乎每个执行步骤都要明确先用 `vectcut-api-search` 确认最新接口、入参和返回结构\n- 飞书多维表格 AI Agent 有 20 次循环上限，所有异步任务统一采用“提交后等待 3 分钟再查结果”的保守策略\n\n## 字幕与音频规则\n\n- 若需口播精剪，优先 `llm-asr`(nlp档位) + `asr-vad`，确保字幕时间轴与剪辑后内容一致\n- 需要字幕上屏时，优先 `add-subtitle-template` 统一模板化输出；这里的“字幕”指随时间轴出现的字幕内容，不包含单独加一句普通文字\n- BGM 全片铺设用 `add-bgm`，关键点提示音用 `add-effect_audio`\n- 涉及“字幕+人声/音频”组合写入时，必须绑定同一个 `draft_id` 执行；任一步返回新 `draft_id` 时，后续步骤必须切换并统一使用该 `draft_id`\n\n## 输出要求\n\n- 至少返回：`draft_id`、`draft_url`\n- 同步返回：执行的技能链路摘要（调用顺序与关键结果）\n- 若失败：返回失败步骤、原始错误、建议修复动作（优先 `query-draft` + `vectcut-api-search`）\n- 用户要求导出成片时：调用 `cloud-render` 并返回可播放/下载地址\n\n## 目录索引\n\n- [add-bgm](rules/add-bgm.md)\n- [add-effect](rules/add-effect.md)\n- [add-effect_audio](rules/add-effect_audio.md)\n- [add-preset](rules/add-preset.md)\n- [add-subtitle-template](rules/add-subtitle-template.md)\n- [add-title](rules/add-title.md)\n- [asr-vad](rules/asr-vad.md)\n- [cloud-render](rules/cloud-render.md)\n- [cut-koubo](rules/cut-koubo.md)\n- [cut-koubo-template](rules/cut-koubo-template.md)\n- [describe-video](rules/describe-video.md)\n- [draft-downloader](rules/draft-downloader.md)\n- [extract-audio](rules/extract-audio.md)\n- [feishu-bitetable-creator](rules/feishu-bitetable-creator.md)\n- [generate-ai-image](rules/generate-ai-image.md)\n- [generate-ai-video](rules/generate-ai-video.md)\n- [generate-cover](rules/generate-cover.md)\n- [human-pip](rules/human-pip.md)\n- [llm-asr](rules/llm-asr.md)\n- [modify-draft](rules/modify-draft.md)\n- [query-draft](rules/query-draft.md)\n- [scrapt-video](rules/scrapt-video.md)\n- [speech-synthesis](rules/speech-synthesis.md)\n- [split-video](rules/split-video.md)\n- [sts-upload](rules/sts-upload.md)\n- [text-background](rules/text-background.md)\n- [text-keywords](rules/text-keywords.md)\n- [video-voiceover-remix](rules/video-voiceover-remix.md)\n- [vectcut-api-search](rules/vectcut-api-search.md)\n- [vectcut-login](rules/vectcut-login.md)\n- [zoom-in-out](rules/zoom-in-out.md)\n\nFile v1.5.11:_meta.json\n\n{\n  \"ownerId\": \"kn7cjw4v6q9zst2vc2w79er98h82a3wt\",\n  \"slug\": \"vectcut\",\n  \"version\": \"1.5.11\",\n  \"publishedAt\": 1779675404303\n}\n\nFile v1.5.11:references/ai-image-model_capabilities.json\n\n{\n  \"version\": \"2026-04-17\",\n  \"source_docs\": [\n    \"https://docs.vectcut.com/443760774e0\"\n  ],\n  \"reference_image_limit_exclusive\": 14,\n  \"models\": {\n    \"nano_banana_2\": {\n      \"aliases\": [\n        \"nano_banana_2\",\n        \"gemini-3.1-flash-image\",\n        \"gemini-3.1-flash-image-preview\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"848x1264\",\n        \"1264x848\",\n        \"896x1200\",\n        \"1200x896\",\n        \"928x1152\",\n        \"1152x928\",\n        \"768x1376\",\n        \"1376x768\",\n        \"1584x672\",\n        \"2048x2048\",\n        \"1696x2528\",\n        \"2528x1696\",\n        \"1792x2400\",\n        \"2400x1792\",\n        \"1856x2304\",\n        \"2304x1856\",\n        \"1536x2752\",\n        \"2752x1536\",\n        \"3168x1344\",\n        \"4096x4096\",\n        \"3392x5056\",\n        \"5056x3392\",\n        \"3584x4800\",\n        \"4800x3584\",\n        \"3712x4608\",\n        \"4608x3712\",\n        \"3072x5504\",\n        \"5504x3072\",\n        \"6336x2688\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"},\n          {\"size\": \"848x1264\", \"ratio\": \"2:3\"},\n          {\"size\": \"1264x848\", \"ratio\": \"3:2\"},\n          {\"size\": \"896x1200\", \"ratio\": \"3:4\"},\n          {\"size\": \"1200x896\", \"ratio\": \"4:3\"},\n          {\"size\": \"928x1152\", \"ratio\": \"4:5\"},\n          {\"size\": \"1152x928\", \"ratio\": \"5:4\"},\n          {\"size\": \"768x1376\", \"ratio\": \"9:16\"},\n          {\"size\": \"1376x768\", \"ratio\": \"16:9\"},\n          {\"size\": \"1584x672\", \"ratio\": \"21:9\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"1696x2528\", \"ratio\": \"2:3\"},\n          {\"size\": \"2528x1696\", \"ratio\": \"3:2\"},\n          {\"size\": \"1792x2400\", \"ratio\": \"3:4\"},\n          {\"size\": \"2400x1792\", \"ratio\": \"4:3\"},\n          {\"size\": \"1856x2304\", \"ratio\": \"4:5\"},\n          {\"size\": \"2304x1856\", \"ratio\": \"5:4\"},\n          {\"size\": \"1536x2752\", \"ratio\": \"9:16\"},\n          {\"size\": \"2752x1536\", \"ratio\": \"16:9\"},\n          {\"size\": \"3168x1344\", \"ratio\": \"21:9\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"3392x5056\", \"ratio\": \"2:3\"},\n          {\"size\": \"5056x3392\", \"ratio\": \"3:2\"},\n          {\"size\": \"3584x4800\", \"ratio\": \"3:4\"},\n          {\"size\": \"4800x3584\", \"ratio\": \"4:3\"},\n          {\"size\": \"3712x4608\", \"ratio\": \"4:5\"},\n          {\"size\": \"4608x3712\", \"ratio\": \"5:4\"},\n          {\"size\": \"3072x5504\", \"ratio\": \"9:16\"},\n          {\"size\": \"5504x3072\", \"ratio\": \"16:9\"},\n          {\"size\": \"6336x2688\", \"ratio\": \"21:9\"}\n        ]\n      }\n    },\n    \"nano_banana_pro\": {\n      \"aliases\": [\n        \"nano_banana_pro\",\n        \"gemini-3-pro-image-preview\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"848x1264\",\n        \"1264x848\",\n        \"896x1200\",\n        \"1200x896\",\n        \"928x1152\",\n        \"1152x928\",\n        \"768x1376\",\n        \"1376x768\",\n        \"1584x672\",\n        \"2048x2048\",\n        \"1696x2528\",\n        \"2528x1696\",\n        \"1792x2400\",\n        \"2400x1792\",\n        \"1856x2304\",\n        \"2304x1856\",\n        \"1536x2752\",\n        \"2752x1536\",\n        \"3168x1344\",\n        \"4096x4096\",\n        \"3392x5056\",\n        \"5056x3392\",\n        \"3584x4800\",\n        \"4800x3584\",\n        \"3712x4608\",\n        \"4608x3712\",\n        \"3072x5504\",\n        \"5504x3072\",\n        \"6336x2688\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"},\n          {\"size\": \"848x1264\", \"ratio\": \"2:3\"},\n          {\"size\": \"1264x848\", \"ratio\": \"3:2\"},\n          {\"size\": \"896x1200\", \"ratio\": \"3:4\"},\n          {\"size\": \"1200x896\", \"ratio\": \"4:3\"},\n          {\"size\": \"928x1152\", \"ratio\": \"4:5\"},\n          {\"size\": \"1152x928\", \"ratio\": \"5:4\"},\n          {\"size\": \"768x1376\", \"ratio\": \"9:16\"},\n          {\"size\": \"1376x768\", \"ratio\": \"16:9\"},\n          {\"size\": \"1584x672\", \"ratio\": \"21:9\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"1696x2528\", \"ratio\": \"2:3\"},\n          {\"size\": \"2528x1696\", \"ratio\": \"3:2\"},\n          {\"size\": \"1792x2400\", \"ratio\": \"3:4\"},\n          {\"size\": \"2400x1792\", \"ratio\": \"4:3\"},\n          {\"size\": \"1856x2304\", \"ratio\": \"4:5\"},\n          {\"size\": \"2304x1856\", \"ratio\": \"5:4\"},\n          {\"size\": \"1536x2752\", \"ratio\": \"9:16\"},\n          {\"size\": \"2752x1536\", \"ratio\": \"16:9\"},\n          {\"size\": \"3168x1344\", \"ratio\": \"21:9\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"3392x5056\", \"ratio\": \"2:3\"},\n          {\"size\": \"5056x3392\", \"ratio\": \"3:2\"},\n          {\"size\": \"3584x4800\", \"ratio\": \"3:4\"},\n          {\"size\": \"4800x3584\", \"ratio\": \"4:3\"},\n          {\"size\": \"3712x4608\", \"ratio\": \"4:5\"},\n          {\"size\": \"4608x3712\", \"ratio\": \"5:4\"},\n          {\"size\": \"3072x5504\", \"ratio\": \"9:16\"},\n          {\"size\": \"5504x3072\", \"ratio\": \"16:9\"},\n          {\"size\": \"6336x2688\", \"ratio\": \"21:9\"}\n        ]\n      }\n    },\n    \"gpt-image-2-all\": {\n      \"aliases\": [\n        \"gpt-image-2-all\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1254x1254\",\n        \"1448x1086\",\n        \"1086x1448\",\n        \"1672x941\",\n        \"941x1672\",\n        \"1537x1023\",\n        \"1023x1537\",\n        \"1915x821\",\n        \"2048x2048\",\n        \"2048x1152\",\n        \"1152x2048\",\n        \"3840x2160\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1254x1254\", \"ratio\": \"1:1\"},\n          {\"size\": \"1448x1086\", \"ratio\": \"4:3\"},\n          {\"size\": \"1086x1448\", \"ratio\": \"3:4\"},\n          {\"size\": \"1672x941\", \"ratio\": \"16:9\"},\n          {\"size\": \"941x1672\", \"ratio\": \"9:16\"},\n          {\"size\": \"1537x1023\", \"ratio\": \"3:2\"},\n          {\"size\": \"1023x1537\", \"ratio\": \"2:3\"},\n          {\"size\": \"1915x821\", \"ratio\": \"21:9\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2048x1152\", \"ratio\": \"16:9\"},\n          {\"size\": \"1152x2048\", \"ratio\": \"9:16\"}\n        ],\n        \"4K\": [\n          {\"size\": \"3840x2160\", \"ratio\": \"16:9\"}\n        ]\n      }\n    },\n    \"seedream-3.0\": {\n      \"aliases\": [\n        \"seedream-3.0\"\n      ],\n      \"supports_reference_images\": false,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"864x1152\",\n        \"1152x864\",\n        \"1280x720\",\n        \"720x1280\",\n        \"832x1248\",\n        \"1248x832\",\n        \"1512x648\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"},\n          {\"size\": \"864x1152\", \"ratio\": \"4:3\"},\n          {\"size\": \"1152x864\", \"ratio\": \"3:4\"},\n          {\"size\": \"1280x720\", \"ratio\": \"16:9\"},\n          {\"size\": \"720x1280\", \"ratio\": \"9:16\"},\n          {\"size\": \"832x1248\", \"ratio\": \"3:2\"},\n          {\"size\": \"1248x832\", \"ratio\": \"2:3\"},\n          {\"size\": \"1512x648\", \"ratio\": \"21:9\"}\n        ]\n      }\n    },\n    \"seedream-4.0\": {\n      \"aliases\": [\n        \"seedream-4.0\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"2048x2048\",\n        \"2304x1728\",\n        \"2496x1664\",\n        \"2560x1440\",\n        \"3024x1296\",\n        \"1440x2560\",\n        \"4096x4096\",\n        \"4694x3520\",\n        \"4992x3328\",\n        \"5404x3040\",\n        \"6198x2656\",\n        \"3040x5404\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2304x1728\", \"ratio\": \"4:3\"},\n          {\"size\": \"2496x1664\", \"ratio\": \"3:2\"},\n          {\"size\": \"2560x1440\", \"ratio\": \"16:9\"},\n          {\"size\": \"3024x1296\", \"ratio\": \"21:9\"},\n          {\"size\": \"1440x2560\", \"ratio\": \"9:16\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"4694x3520\", \"ratio\": \"4:3\"},\n          {\"size\": \"4992x3328\", \"ratio\": \"3:2\"},\n          {\"size\": \"5404x3040\", \"ratio\": \"16:9\"},\n          {\"size\": \"6198x2656\", \"ratio\": \"21:9\"},\n          {\"size\": \"3040x5404\", \"ratio\": \"9:16\"}\n        ]\n      }\n    },\n    \"seedream-4.5\": {\n      \"aliases\": [\n        \"seedream-4.5\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"2048x2048\",\n        \"2304x1728\",\n        \"2496x1664\",\n        \"2560x1440\",\n        \"3024x1296\",\n        \"1440x2560\",\n        \"4096x4096\",\n        \"4694x3520\",\n        \"4992x3328\",\n        \"5404x3040\",\n        \"6198x2656\",\n        \"3040x5404\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2304x1728\", \"ratio\": \"4:3\"},\n          {\"size\": \"2496x1664\", \"ratio\": \"3:2\"},\n          {\"size\": \"2560x1440\", \"ratio\": \"16:9\"},\n          {\"size\": \"3024x1296\", \"ratio\": \"21:9\"},\n          {\"size\": \"1440x2560\", \"ratio\": \"9:16\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"4694x3520\", \"ratio\": \"4:3\"},\n          {\"size\": \"4992x3328\", \"ratio\": \"3:2\"},\n          {\"size\": \"5404x3040\", \"ratio\": \"16:9\"},\n          {\"size\": \"6198x2656\", \"ratio\": \"21:9\"},\n          {\"size\": \"3040x5404\", \"ratio\": \"9:16\"}\n        ]\n      }\n    },\n    \"seedream-5.0\": {\n      \"aliases\": [\n        \"seedream-5.0\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"2048x2048\",\n        \"2304x1728\",\n        \"2496x1664\",\n        \"2560x1440\",\n        \"3024x1296\",\n        \"1440x2560\",\n        \"3072x3072\",\n        \"3456x2592\",\n        \"2592x3456\",\n        \"4096x2304\",\n        \"2304x4096\",\n        \"2496x3744\",\n        \"3744x2496\",\n        \"4704x2016\"\n      ],\n      \"size_profiles\": {\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2304x1728\", \"ratio\": \"4:3\"},\n          {\"size\": \"2496x1664\", \"ratio\": \"3:2\"},\n          {\"size\": \"2560x1440\", \"ratio\": \"16:9\"},\n          {\"size\": \"3024x1296\", \"ratio\": \"21:9\"},\n          {\"size\": \"1440x2560\", \"ratio\": \"9:16\"}\n        ],\n        \"3K\": [\n          {\"size\": \"3072x3072\", \"ratio\": \"1:1\"},\n          {\"size\": \"3456x2592\", \"ratio\": \"4:3\"},\n          {\"size\": \"2592x3456\", \"ratio\": \"3:4\"},\n          {\"size\": \"4096x2304\", \"ratio\": \"16:9\"},\n          {\"size\": \"2304x4096\", \"ratio\": \"9:16\"},\n          {\"size\": \"2496x3744\", \"ratio\": \"2:3\"},\n          {\"size\": \"3744x2496\", \"ratio\": \"3:2\"},\n          {\"size\": \"4704x2016\", \"ratio\": \"21:9\"}\n        ]\n      }\n    }\n  }\n}\n\nFile v1.5.11:references/bgms.json\n\n{\n  \"bgms\": [\n    \"https://player.install-ai-guider.top/koubo/bgm/void.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/time_to_pretend.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/the_right_path.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/spoons_for_loons.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/night_cruising.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Monsieur_melody.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/melody_mix.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/IV_feat.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Golden_hour.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Fight.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/%E5%BF%99%E7%A2%8C%E7%9A%84%E7%94%9F%E6%B4%BB%E4%BA%BA%E5%B1%B1%E4%BA%BA%E6%B5%B7.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/%E8%9D%B4%E8%9D%B6%E6%AD%A5.MP3\"\n  ]\n}\n\nFile v1.5.11:references/cover_prompt_references.md\n\n# Generate Cover Prompt References\n\n用于 `submit_task/generate` 前的提示词润色参考。请先理解草稿主题，再从下列风格中抽取表达，不要生硬照抄整段。\n\n## 使用规则\n\n- 目标：把 `query_script` 提取的主题、卖点、受众转成“可执行画面语言”。\n- 结构建议：`画面类型 + 主体 + 场景元素 + 构图/镜头 + 质感/色彩 + 文字排版要求(可选)`。\n- 优先“语义清洗”：将草稿里的原始字段、文件名、JSON 结构转为自然语言短语。\n- 可复用关键词：精准构图、视觉冲击力、高对比度、高饱和度、留白、层次、系列化风格。\n- 默认输出“海报封面”而非“纯场景图”：除非用户明确要求无字，必须写入标题文案与排版信息。\n- 文案字段建议：`主标题(headline)`、`副标题(subheadline)`、`角标/标签(badge)`、`位置(左上/中上/右下)`、`字体风格(粗体/手写/无衬线)`。\n- 母版选择建议：每次随机抽取 1 条参考提示词作为母版，不固定单一参考。\n- 人物口播约束：人物主体保持写实高保真（脸部特征/肤质/服饰不做卡通化）；风格化优先作用于背景、图形元素和文字排版。\n\n## 内置参考提示词（用户提供）\n\n### 参考 1：美式漫画综艺混剪\n\n创作一张美式漫画风的综艺混剪自媒体封面：背景为蓝色波点渐变底，搭配黄色闪电、星光、卡通点赞手等装饰元素；排版采用“顶部大标题 + 话题标签 + 人物周边气泡文案”的分层结构，顶部绿色对话框内用白色粗体字呈现“超闪亮时刻”，下方蓝色对话框内排版“# 高小定综艺混剪”；将参考图里的人物形象抠出，并且人物居中，周围环绕两个漫画风格气泡框，分别标注“接梗补刀”“高能救场”（字体为蓝色粗体，搭配白色外框）；整体色调以蓝、黄、绿为主，明亮活泼，风格融合美式漫画的夸张动感与综艺内容的吸睛属性，传递出热闹有趣的视觉效果。\n\n### 参考 2：杂志海报\n\n杂志风格,画面主体是冷艳时尚的人物，人物形象来源于参考图里的人物形象抠出，姿态张力十足。左上角以大号白色衬线字体呈现刊名《VOGUE》，字母锐利有质感；左侧中下部用黑色细体字竖排标注 “FEBRUARY 2025 | URBAN EDGE”，点明月份与主题；右下角则以金色小号字体印出 “COVER STAR: ELLA CHEN”，强化人物身份。背景为极简浅灰，黑色胶带元素穿插其中。光线是硬调侧光，塑造强烈阴影与时尚氛围。色彩黑、绿、白对比高级，构图中心对称。使用哈苏 H6D-100c，HC 80mm f/2.8，快门 1/250s，光圈 f/3.5，ISO 100。后期文字排版与画面风格统一，字体质感匹配整体冷冽高级感，让封面既具视觉冲击又信息清晰。\n\n### 参考 3：复古风海报\n\n复古风海报，采用拼贴艺术风格，主色调深咖加米黄色，背景融合做旧报纸、方格笔记本、复古磁带、老式电视机、复古包包，等怀旧元素，搭配回形针等文具装饰，元素大小对比；主体是参考图里的人物半身，整体风格兼具复古感与潮流感，色彩复古柔和，画面上方放主标题潮流粗体艺术文字突出 “周一复古穿搭”小号字色块垫底“甜酷 | 校园 | 潮流”，下描放小文案“更适合你的复古校园穿搭” ，搭配描边线，手绘小元素等营造出充满年代感又时尚的视觉效果。\n\n### 参考 4：杂志封面\n《时代周刊》封面，主角为一位杰出的人物封面，人物形象是从参考图里扣出来的。儒商风范：优雅、睿智且老练。留着修剪整齐的黑色短发，身着剪裁考究的深色西装。神情沉稳自信，带着一丝会意的微笑。灯光为戏剧性的高对比度影棚灯光，具有典型的杂志封面肖像风格。背景带有《时代周刊》标志性的红色边框。文字元素包括左上角的‘TIME’字样，“The New Visionary”的粗体经典衬线字体标题。照片级真实感，超高清细节，8k分辨率，电影级画质，眼睛部分对焦清晰。”\n\n## 润色产出模板（推荐）\n\n可在第 3 步前先整理成一段最终 prompt：\n\n`封面设计，{风格定位}。主体：{核心人物/核心物体}。场景：{关键场景元素}。构图与镜头：{景别/视角/运动感}。色彩与质感：{主色调/材质}。版式：{是否需要标题、副标题、角标及其位置}。整体目标：{吸睛点/转化目标}。`\n\nFile v1.5.11:references/effect_audios.json\n\n{\n  \"effect_audios\": [\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E6%89%93%E5%93%8D%E6%8C%87%E5%A3%B0.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%98%9F%E5%92%9A%E6%8F%90%E7%A4%BA%E9%9F%B3.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%9B%9E%E5%BF%86%E5%88%B7%E4%B8%80%E4%B8%8B.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%96%B7%E9%9B%BE%E5%89%82%E5%96%B7%E4%B8%80%E4%B8%8B.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%8D%81%E9%9D%A2%E5%9F%8B%E4%BC%8F%E5%97%AF.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E6%89%8B%E6%9C%BA%E9%94%AE%E7%9B%98%E6%89%93%E5%AD%972.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%BE%AE%E6%B3%A2%E7%82%89%E5%8F%AE.MP3\"\n  ]\n}\n\nFile v1.5.11:references/model_capabilities.json\n\n{\n  \"models\": {\n    \"veo3.1\": {\n      \"aliases\": [\"veo3.1\"],\n      \"allowed_resolutions\": [\"1920x1080\", \"1080x1920\", \"1280x720\", \"720x1280\"],\n      \"supports_images\": true,\n      \"max_images\": 3,\n      \"supports_gen_duration\": false,\n      \"allowed_gen_duration\": [],\n      \"supports_generate_audio\": false\n    },\n    \"veo3.1-pro\": {\n      \"aliases\": [\"veo3.1-pro\"],\n      \"allowed_resolutions\": [\"1920x1080\", \"1080x1920\", \"1280x720\", \"720x1280\"],\n      \"supports_images\": true,\n      \"max_images\": 3,\n      \"supports_gen_duration\": false,\n      \"allowed_gen_duration\": [],\n      \"supports_generate_audio\": false\n    },\n    \"seedance-1.5-pro\": {\n      \"aliases\": [\"seedance-1.5-pro\"],\n      \"allowed_resolutions\": [\n        \"1920x1080\",\n        \"1664x1248\",\n        \"1440x1440\",\n        \"1248x1664\",\n        \"1080x1920\",\n        \"2206x946\",\n        \"1280x720\",\n        \"1112x834\",\n        \"960x960\",\n        \"834x1112\",\n        \"720x1280\",\n        \"1470x630\",\n        \"864x496\",\n        \"752x560\",\n        \"640x640\",\n        \"560x752\",\n        \"496x864\",\n        \"992x432\"\n      ],\n      \"supports_images\": true,\n      \"max_images\": 10,\n      \"supports_gen_duration\": true,\n      \"allowed_gen_duration\": [4, 5, 6, 7, 8, 9, 10, 11, 12],\n      \"supports_generate_audio\": true\n    },\n    \"grok-video-3\": {\n      \"aliases\": [\"grok-video-3\"],\n      \"allowed_resolutions\": [\"1376x928\", \"928x1376\", \"560x560\"],\n      \"supports_images\": true,\n      \"max_images\": 1,\n      \"supports_gen_duration\": true,\n      \"allowed_gen_duration\": [6, 10, 15],\n      \"supports_generate_audio\": false\n    }\n  }\n}\n\nFile v1.5.11:rules/add-bgm.md\n\n---\nname: add-bgm\ndescription: \"为口播草稿自动添加背景音乐：先用 query-draft 获取草稿总时长，再用 get_duration 获取 BGM 时长，最后循环调用 add_audio 铺满全片。用户提到“加BGM/背景音乐/口播收尾配乐/自动铺满音频”时必须使用本技能。\"\n---\n\n# Add BGM Skill\n\n用于给口播类草稿在最后一步自动补背景音乐。核心是“查总时长 -> 查音频时长 -> 循环铺轨道”，避免手工反复添加。\n\n官方接口文档：\n- query_script: https://docs.vectcut.com/386764616e0\n- get_duration: https://docs.vectcut.com/328289318e0\n- add_audio: https://docs.vectcut.com/321196190e0\n\n## 何时使用\n\n- 用户要求“加背景音乐 / 加 BGM”\n- 用户希望把一段 BGM 自动铺满整条口播\n- 用户要在已有 `draft_id` 基础上追加音频轨道\n\n## 鉴权前置（必须）\n\n- 检查 `VECTCUT_API_KEY` 是否存在且有效\n- 缺失、为空或疑似失效时，先调用 `vectcut-login`\n\n## BGM 来源\n\n- 默认从技能内置白名单读取：`<skill-path>/references/bgms.json`\n- 若用户指定 `bgm_url`，优先使用该链接\n- 若未指定：\n  - 默认使用白名单第一条\n  - 也可通过 `bgm_index` 选择\n  - `random_bgm=true` 时随机选择\n\n## 执行流程（固定）\n\n1. 调用 `query_script` 获取草稿信息，读取 `draft.duration`（微秒）\n2. 将草稿时长转换为秒：`draft_duration_seconds = draft.duration / 1_000_000`\n3. 调用 `get_duration` 查询选中 BGM 的时长（秒）\n4. 按时间线循环调用 `add_audio`：\n   - 每段 `start=0`\n   - 每段 `target_start=当前累计位置`\n   - 每段 `end=min(bgm_duration, 剩余时长)`\n   - 直到覆盖完整草稿时长\n5. 返回最终 `draft_id`、`draft_url` 与每段素材写入结果\n\n## 执行方式\n\n准备请求 JSON，例如：\n\n```json\n{\n  \"draft_id\": \"dfd_xxx\",\n  \"bgm_index\": 0,\n  \"track_name\": \"audio_bgm\"\n}\n```\n\n执行脚本：\n\n```bash\npython <skill-path>/scripts/add_bgm.py \\\n  \"/tmp/add_bgm_payload.json\" \\\n  --output \"./add_bgm_result.json\"\n```\n\n## 输入说明\n\n- 必填：\n  - `draft_id`\n- 常用可选：\n  - `bgm_url`：直接指定背景音乐链接\n  - `bgm_index`：从白名单按索引选\n  - `random_bgm`：是否随机选白名单\n  - `track_name`：默认 `audio_bgm`\n  - `volume`：单位 dB，可选；不传时不主动设置，使用平台默认音量\n  - `speed`：默认 `1.0`\n  - `fade_in_duration` / `fade_out_duratioin`\n  - `bgm_list_path`：自定义白名单文件路径（推荐 JSON 格式：`{\"bgms\":[...]}`）\n\n## 输出结果\n\n默认输出 `add_bgm_result.json`，核心字段：\n- `meta.draft_duration_seconds`\n- `meta.bgm_duration_seconds`\n- `meta.segment_count`\n- `meta.selected_bgm_url`\n- `result.draft_id`\n- `result.draft_url`\n- `result.added_segments[]`\n\n## 失败处理建议\n\n- `VECTCUT_API_KEY` 缺失：先调用 `vectcut-login`\n- `draft_id` 无效：先用 `query-draft` 验证草稿可访问\n- 白名单无可用 URL：检查 `references/bgms.json` 或自定义 `bgm_list_path` 格式\n- `get_duration` 返回异常：检查 BGM 链接是否公网可访问\n- `add_audio` 失败：检查 `track_name/volume/speed` 参数合法性\n\nFile v1.5.11:rules/add-effect_audio.md\n\n---\nname: add-effect_audio\ndescription: \"在关键时间点为口播草稿添加短音效提示（一次即可，不铺满全片），用于开头抓注意力、重点关键词强化、画中画切入提示。用户提到“加提示音/重点音效/开头叮一下/关键词音效/画中画提示音”时必须使用本技能。\"\n---\n\n# Add Effect Audio Skill\n\n用于在关键位置添加“短提示音效”，强调当前讲述内容或画面重点。和背景音乐不同，本技能是单次点缀，不做全片铺满。\n\n官方接口文档：\n- get_duration: https://docs.vectcut.com/328289318e0\n- add_audio: https://docs.vectcut.com/321196190e0\n\n## 何时使用\n\n- 用户要求加“提示音/重点音效/叮一下”\n- 开头需要一个抓注意力的提示音\n- 中间出现重点关键词，需要声音强调\n- 画中画切入、重点镜头出现时，需要短音效提示\n\n## 鉴权前置（必须）\n\n- 检查 `VECTCUT_API_KEY` 是否可用\n- 缺失、为空或疑似失效时，先调用 `vectcut-login`\n\n## 音效来源\n\n- 默认读取技能内置白名单：`<skill-path>/references/effect_audios.json`\n- 若用户提供 `effect_audio_url`，优先使用用户链接\n- 若未指定：\n  - 默认取白名单第一条\n  - 可用 `effect_audio_index` 按序号选\n  - `random_effect_audio=true` 时随机选\n\n## 执行策略（与 BGM 区分）\n\n- 本技能默认“添加一次”即可，不循环铺满\n- 默认开头触发：`target_start=0`\n- 重点位由用户指定时间点：`target_start=<秒>`\n- 音效时长通过 `get_duration` 获取，默认整段添加；需要更短可传 `clip_duration`\n\n## 执行方式\n\n准备请求 JSON，例如：\n\n```json\n{\n  \"draft_id\": \"dfd_xxx\",\n  \"target_start\": 0.0,\n  \"effect_audio_index\": 0,\n  \"track_name\": \"audio_effect\",\n  \"volume\": 0.0\n}\n```\n\n执行脚本：\n\n```bash\npython <skill-path>/scripts/add_effect_audio.py \\\n  \"/tmp/add_effect_audio_payload.json\" \\\n  --output \"./add_effect_audio_result.json\"\n```\n\n## 输入说明\n\n- 必填：\n  - `draft_id`\n- 常用可选：\n  - `target_start`：音效放置时间点（秒），默认 `0.0`\n  - `effect_audio_url`：直接指定音效链接\n  - `effect_audio_index`：白名单索引\n  - `random_effect_audio`：是否随机选音效\n  - `clip_duration`：截取时长（秒），默认音效全长\n  - `track_name`：默认 `audio_effect`\n  - `volume`：单位 dB，默认 `0.0`\n  - `speed`：默认 `1.0`\n  - `effect_audio_list_path`：自定义音效白名单路径\n\n## 输出结果\n\n默认输出 `add_effect_audio_result.json`，核心字段：\n- `meta.selected_effect_audio_url`\n- `meta.source_duration_seconds`\n- `meta.clip_duration_seconds`\n- `meta.target_start_seconds`\n- `result.draft_id`\n- `result.draft_url`\n- `result.material_id`\n\n## 失败处理建议\n\n- `VECTCUT_API_KEY` 缺失：先调用 `vectcut-login`\n- `draft_id` 无效：先确认草稿可访问\n- 音效白名单为空：检查 `references/effect_audios.json` 或自定义列表\n- `get_duration` 失败：检查音效链接可访问性\n- `add_audio` 失败：检查 `target_start/volume/speed` 参数\n\nFile v1.5.11:rules/add-effect.md\n\n---\nname: add-effect\ndescription: \"为视频片段添加场景特效或人物特效，提升重点表达与画面丰富度。用户提到“加特效”“开头抓眼球”“强调某个画面细节”“口播悬疑氛围”“人物惊讶效果”时必须使用本技能。\"\n---\n\n# Add Effect Skill\n\n用于调用 VectCut `add_effect` 接口给视频草稿添加特效，适合以下场景：\n- 开头 1~3 秒抓眼球\n- 口播重点句强化\n- 悬疑/疑问语气氛围塑造\n- 电商带货细节放大、惊讶反应\n\n官方接口文档：\n- https://docs.vectcut.com/321244826e0\n- https://docs.vectcut.com/321245379e0\n- https://docs.vectcut.com/321245348e0\n\n## 何时使用\n\n- 用户说“给这段加特效”\n- 用户希望“重点处理某个片段”\n- 用户想让开场更有冲击力\n- 用户要在口播里做“悬疑/疑问/反向例子”氛围\n- 用户想强调商品细节、突出惊讶或灵感瞬间\n\n## 鉴权前置（必须）\n\n- 检查 `VECTCUT_API_KEY`\n- 缺失或疑似失效时，先调用 `vectcut-login`\n\n## 常用特效推荐（优先）\n\n- 场景特效 `聚光灯`：口播开头、悬疑、疑问\n- 场景特效 `暗角`：口播开头、悬疑、疑问\n- 场景特效 `放大镜`：电商细节强调\n- 场景特效 `模糊`：口播画中画背景、反向例子\n- 人物特效 `大头`：带货吃惊反应\n- 人物特效 `灵机一动`：重点表达、灵感瞬间\n\n## 可设置参数\n\n`add_effect` 常用参数：\n- `effect_type`：特效名称（必填）\n- `start`：开始时间（秒，默认 `0.0`）\n- `end`：结束时间（秒，默认 `3.0`）\n- `draft_id`：草稿 ID（可选）\n- `track_name`：特效轨道名（默认 `effect_01`）\n- `params`：特效参数数组（可选，数字列表；未传按系统默认）\n\n说明：\n- `params` 的含义因特效类型而异，不同特效支持的参数个数和范围不同。\n- 若不确定 `params`，建议先不传，使用特效默认参数更稳妥。\n\n## 执行方式\n\n先准备请求 JSON，例如：\n\n```json\n{\n  \"draft_id\": \"dfd_xxx\",\n  \"effect_type\": \"聚光灯\",\n  \"start\": 0.0,\n  \"end\": 2.8,\n  \"track_name\": \"effect_hook\",\n  \"effect_category\": \"scene\"\n}\n```\n\n执行：\n\n```bash\npython <skill-path>/scripts/add_effect.py \\\n  \"/tmp/add_effect_payload.json\" \\\n  --output \"./add_effect_result.json\"\n```\n\n## 查询可用特效（官方列表）\n\n查询场景特效：\n\n```bash\npython <skill-path>/scripts/add_effect.py --list-scene\n```\n\n查询人物特效：\n\n```bash\npython <skill-path>/scripts/add_effect.py --list-character\n```\n\n查询全部特效：\n\n```bash\npython <skill-path>/scripts/add_effect.py --list-all\n```\n\n## 输入说明\n\n- 必填：\n  - `effect_type`\n- 可选：\n  - `draft_id`\n  - `start`（默认 `0.0`）\n  - `end`（默认 `3.0`）\n  - `track_name`（默认 `effect_01`）\n  - `params`（数字数组）\n  - `width`（默认 `1080`）\n  - `height`（默认 `1920`）\n  - `effect_category`（`scene` / `character` / `auto`，默认 `auto`，仅用于校验与推荐）\n\n## 输出结果\n\n默认输出 `add_effect_result.json`，核心字段：\n- `meta.endpoint`\n- `meta.effect_type`\n- `meta.resolved_category`\n- `request_payload`\n- `result.raw_response`\n\n## 失败处理建议\n\n- `effect_type` 不存在：先用 `--list-scene` / `--list-character` 查询后重试\n- `end <= start`：修正时间区间\n- `params` 不兼容：去掉 `params` 先用默认值验证效果\n- 鉴权失败：先执行 `vectcut-login`\n\nFile v1.5.11:rules/add-preset.md\n\n---\nname: add-preset\ndescription: \"使用预设片段（preset）把已上传的预设模板插入到草稿并替换其中元素。适用于模板化替换素材、快速复用复杂包装效果。用户提到“预设片段/套预设”时必须优先使用本技能。\"\n---\n\n# Add Preset Skill\n\n用于在 VectCut 草稿中使用“预设片段（preset）”。预设是提前在剪映里编辑好的模板，可由图片、视频、文字、关键帧、音效等组合而成。`add-preset` 只负责“使用已上传预设”，不负责上传预设文件。\n\n官方文档：\n- https://docs.vectcut.com/372375099e0\n\n接口地址：\n- `POST https://open.vectcut.com/cut_jianying/add_preset`\n\n## 何时使用\n\n- 用户需要基于模板替换某些素材（图、视频、文案等）\n- 用户只想单独使用一个预设并替换单个字段（如 `preset_id=xxx`，把 `text1` 改为 `\"123\"`）\n- 用户要通过多个预设叠加实现复杂效果（如口播字幕、画中画、特效组合）\n\n## 预设上传边界（必须遵守）\n\n- 预设上传必须在客户端完成，`add-preset` 不提供上传能力\n- 当用户还没有 `preset_id` 时，必须先引导用户去客户端上传并拿到 `preset_id`\n- 只有拿到有效 `preset_id` 后，才进入预设使用流程\n\n## 使用前置（必须）\n\n- 检查 `VECTCUT_API_KEY`，缺失或失效时先走 `vectcut-login`\n- 请求前先阅读官方文档：https://docs.vectcut.com/372375099e0\n- 严格按文档确认该 `preset_id` 支持替换的元素类型与参数结构\n\n## 核心输入\n\n- 必填：`preset_id`（客户端上传后返回的预设 ID）\n- 可选：`draft_id`（目标草稿 ID；为空时由接口默认创建新草稿）\n- 可选：预设片段插入到草稿轨道上的目标时间`target_start`, 原始预设片段的截取时间`start`, `end`\n- 可选：预设内元素替换参数（如图片/视频/文字替换映射）\n\n说明：\n- 不同预设允许替换的元素和字段不同，必须按照用户要求的字段进行替换\n\n## 调用示例\n\n`curl` 示例：\n\n```bash\ncurl --location 'https://open.vectcut.com/cut_jianying/add_preset' \\\n  --header \"Authorization: Bearer ${VECTCUT_API_KEY}\" \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"preset_id\": \"b795a680-a581-4965-84b1-9e9ad313b522\",\n    \"replacements\": [\n      {\"text1\": \"流光剪辑\"},\n      {\"image1\": \"https://player.install-ai-guider.top/example/mao.webp\"},\n      {\"video1\": \"https://cdn.wanx.aliyuncs.com/wanx/1719234057367822001/text_to_video/092faf3c94244973ab752ee1280ba76f.mp4?file=092faf3c94244973ab752ee1280ba76f.mp4\"}\n    ],\n    \"target_start\": 2,\n    \"draft_id\": \"draft_456\",\n    \"transform_x\": 0.5,\n    \"transform_y\": 0.5,\n    \"rotation\": 0,\n    \"scale_x\": 1.0,\n    \"scale_y\": 1.0,\n    \"track_name\": \"my_preset_track\",\n    \"width\": 1080,\n    \"height\": 1920\n  }'\n```\n\n脚本调用示例（推荐统一用脚本）：\n\n```bash\npython <skill-path>/scripts/add_preset.py \\\n  \"/tmp/add_preset_payload.json\" \\\n  --output \"./add_preset_result.json\"\n```\n\n单独使用预设（仅替换 `text1`，不传 `draft_id` 由接口新建草稿）示例：\n\n```json\n{\n  \"preset_id\": \"xxx\",\n  \"replacements\": [\n    {\"text1\": \"123\"}\n  ]\n}\n```\n\n## 失败处理建议\n\n- 无 `preset_id`：明确告知先去客户端上传预设，再返回继续执行\n-  New segment overlaps错误，这表示目标轨道的目标时间范围已经有素材占位了，通常你需要设置track_name将当前预设放到其他轨道。\n\nFile v1.5.11:rules/add-subtitle-template.md\n\n---\nname: add-subtitle-template\ndescription: \"根据用户输入的音视频与结构化字幕信息，先生成或整理可上屏字幕，再自动选择并套用字幕模板，生成并执行 VectCut execute_workflow 批量写回字幕。用户提到“生成字幕并上屏/套字幕模板/按词字幕动画/基于音频或视频自动出字幕”时务必使用本技能；只要结果用于字幕上屏，严禁使用 basic 转写，必须走 nlp。若只是单纯添加一段文字、标题、标签、贴纸文案，不要使用本技能，应先走 vectcut-api-search 查找合适文字接口。\"\n---\n\n# Add Subtitle Template Skill\n\n把“字幕生成/整理 -> 模板匹配 -> 工作流执行”做成一条稳定链路，目标是批量添加模板字幕并返回可继续编辑的 `draft_id`。\n\n技能内置脚本（按 skill-creator 规范打包在 `scripts/`，必须优先用这些脚本）：\n- `<skill-path>/scripts/apply_subtitle_template.py`（统一入口：自动标准化 + 自动选模板）\n- `<skill-path>/scripts/template_word_pop.py`（词块弹入）\n- `<skill-path>/scripts/template_roll_focus.py`（滚动聚焦）\n- `<skill-path>/scripts/template_slide_in_out.py`（句级上滑入/上滑出）\n- `<skill-path>/scripts/template_karaoke_highlight.py`（逐词高亮 Karaoke）\n- `<skill-path>/scripts/template_dual_track_motion.py`（交替轨道 + 关键帧上移）\n- `<skill-path>/scripts/template_bilingual_keyword.py`（中英双语 + 关键词高亮）\n- `<skill-path>/scripts/template_preset_transition.py`（主字幕 + 预设转场）\n- 要求：先把用户输入字幕标准化为模板可接收结构，再调用模板函数产出 `draft_id + inputs + script`\n- 禁止直接重写模板逻辑；只允许做“输入映射/补齐”和“执行 workflow”\n\n## 字幕上屏硬约束\n\n- 只要进入“字幕模板/字幕上屏/草稿写回”链路，`effect_mode=basic` 一律拒绝执行\n- `basic` 仅允许用于素材分析与粗预览，不得作为上屏输入\n- 发现输入里标记为 `basic`（如 `meta.effect_mode=basic` 或 `meta.asr_effect_mode=basic`）时，必须报错并要求改为 `llm-asr --effect-mode nlp`\n\n字幕输入对齐规则（把用户字幕向 `scripts/` 模板输入靠拢）：\n- 所有模板函数签名都按 `func(segments, draft_id)` 调用，核心是先构造 `segments`\n- `segments` 标准项优先包含：`start`、`end`、`text`，单位统一毫秒\n- 若用户给的是秒：乘以 `1000` 转毫秒；若已是毫秒：保持不变\n- 若缺 `end`：用下一段 `start`，无下一段则用 `start + 1000~2000ms` 兜底\n- 若要走词块模板（`template_word_pop.py`）：尽量补 `phrase=[{text,start_time,end_time}]`，无词级时间则按句子时长均分\n- 若只具备句级字幕：优先走句级模板（`template_slide_in_out.py` / `template_roll_focus.py` / `template_dual_track_motion.py` / `template_preset_transition.py`）\n\n模板调用方式（固定）：\n- 优先调用统一入口：`python <skill-path>/scripts/apply_subtitle_template.py --input <subtitle_json> --draft-id <draft_id>`\n- 默认随机选模板；如需复现可追加 `--selection-mode stable`\n- 所有模板统一通过“命名入口函数”调用：`apply_template(segments, draft_id)`\n- 模板函数返回值直接作为 `execute_workflow` 的请求体（或其主体字段），不要手工重拼一套新脚本\n- 若用户显式指定模板文件名，优先按用户指定模板执行\n\n工作流接口文档：\n- https://docs.vectcut.com/363414609e0\n\n## 鉴权前置（必须）\n\n- 在调用 `llm-asr`、`execute_workflow` 或任何 VectCut 接口前，先检查环境变量 `VECTCUT_API_KEY`\n- 若未设置 `VECTCUT_API_KEY`，必须先调用 `vectcut-login` 技能完成登录和 token 校验，再继续本技能流程\n- 禁止在缺少 token 的情况下直接继续执行模板写入或工作流调用\n\n## 适用边界（必须先判断）\n\n- 本技能解决的是“字幕上屏”：字幕来源可以是已有 `segments`，也可以先从 `audio_url` / `video_url` 生成\n- 若用户只有音频或视频，本技能链路是“先用 `llm-asr(effect_mode=nlp)` 生成结构化字幕，再套模板写回草稿”\n- 若用户已经有结构化字幕和对应媒体，本技能直接做模板化上屏\n- 若用户只是要“添加一段文字/标题/说明文案/标签/贴纸文案”，这不是字幕生成链路，禁止触发本技能\n- 遇到“纯文字添加”诉求时，必须先转到 `vectcut-api-search` 检索合适接口（通常优先查 `add_text` 及其衍生能力）\n\n## 何时使用\n\n- 用户要“生成字幕并上屏”“添加模板字幕”“套用字幕模板”“词级字幕动画”\n- 用户给了音频或视频素材，希望先自动生成字幕，再完成模板字幕上屏\n- 用户给了结构化字幕 + 对应媒体，想把字幕批量写回已有或新建草稿\n- 用户给了 `draft_id`，希望在已有草稿继续做模板字幕上屏\n\n## 何时不要使用\n\n- 用户只是要加一句固定文案、标题、角标、贴纸文字、口播标题条\n- 用户的目标不是“字幕跟随时间轴上屏”，而是普通文字元素写入\n- 这类请求必须先走 `vectcut-api-search`，确认使用 `add_text`、`add_title` 或其他更合适接口\n\n## 输入识别（严格三分支）\n\n先判断用户输入是否包含以下数据：\n- 结构化字幕：`segments`（句级或词级时间戳，至少有 `start/end/text`）\n- 媒体信息：`audio_url` / `video_url`（可单独一种，也可都有）\n\n按以下顺序分流：\n\n1. **仅有字幕，无音视频（情况 1.1）**\n- 不执行模板写入\n- 明确提示用户补充可访问的 `audio_url` 或 `video_url`\n- 说明原因：缺少媒体来源会影响时间轴校验与可复现执行\n\n2. **仅有音视频，无结构化字幕（情况 1.2）**\n- 必须先调用 `llm-asr` 技能提取结构化字幕\n- 默认 `effect_mode` 固定 `nlp`\n- 必须先把原始素材写入草稿，再进入模板匹配：\n  - 有 `video_url`：调用 `add_video`（文档：https://docs.vectcut.com/321243745e0）\n  - 仅有 `audio_url`：调用 `add_audio`（文档：https://docs.vectcut.com/321196190e0）\n  - 默认参数约定：`start=0`、`end=0`（表示取到源素材结尾）、`target_start=0`\n  - `add_video` 关键字段：`video_url`, `start`, `end`, `target_start`, `track_name`, `draft_id`\n  - `add_audio` 关键字段：`audio_url`, `start`, `end`, `target_start`, `track_name`, `draft_id`\n  - `add_video` 请求示例：\n\n```bash\ncurl --location --request POST 'https://open.vectcut.com/cut_jianying/add_video' \\\n  --header 'Content-Type: application/json' \\\n  --header 'Authorization: Bearer <VECTCUT_API_KEY>' \\\n  --header 'Accept: */*' \\\n  --header 'Host: open.vectcut.com' \\\n  --header 'Connection: keep-alive' \\\n  --data-raw '{\n    \"video_url\": \"https://cdn.wanx.aliyuncs.com/wanx/1719234057367822001/text_to_video/092faf3c94244973ab752ee1280ba76f.mp4?spm=5176.29623064.0.0.41ed26d6cBOhV3&file=092faf3c94244973ab752ee1280ba76f.mp4\", // 视频链接\n    \"start\": 0, // 原视频的截取开始时间，默认0\n    \"end\": 0, // 原视频的截取结束时间，默认视频时长\n    \"target_start\": 0, // 视频插入轨道的开始时间，默认0\n    \"track_name\": \"video_main\",\n    \"draft_id\": \"<draft_id>\"\n  }'\n```\n\n  - `add_audio` 请求示例：\n\n```bash\ncurl --location --request POST 'https://open.vectcut.com/cut_jianying/add_audio' \\\n  --header 'Content-Type: application/json' \\\n  --header 'Authorization: Bearer <VECTCUT_API_KEY>' \\\n  --header 'Accept: */*' \\\n  --header 'Host: open.vectcut.com' \\\n  --header 'Connection: keep-alive' \\\n  --data-raw '{\n    \"audio_url\": \"https://lf3-lv-music-tos.faceu.com/obj/tos-cn-ve-2774/oYACBQRCMlWBIrZipvQZhI5LAlUFYii0RwEPh\",\n    \"start\": 0, // 原音频的截取开始时间，默认0\n    \"end\": 0, // 原音频的截取结束时间，默认音频时长\n    \"target_start\": 0,// 音频插入轨道的开始时间，默认0\n    \"track_name\": \"audio_main\",\n    \"draft_id\": \"<draft_id>\"\n  }'\n```\n  - 必须使用素材写回接口返回的 `draft_id` 作为后续编辑草稿 ID\n  - 后续 `llm-asr`、模板脚本与 `execute_workflow` 必须显式传入同一个 `draft_id`，禁止新建草稿分支\n- 拿到 `segments` 后，基于上述同一 `draft_id` 进入“模板匹配”步骤\n\n3. **音视频 + 结构化字幕都已具备（情况 1.3）**\n- 直接进入“模板匹配”步骤\n\n## 模板匹配（两种情况）\n\n### 情况 2.1：可直接套用\n\n当字幕结构满足模板最低要求时，直接套用。默认选型顺序：\n\n1. 有 `en` 字段或用户要求双语 -> `template_bilingual_keyword.py`\n2. 有完整 `words[].start_time/end_time` 且要逐词高亮 -> `template_karaoke_highlight.py`\n3. 用户要求预设样式/预设贴纸感 -> `template_preset_transition.py`\n4. 用户要求交替轨道、字幕位移动画 -> `template_dual_track_motion.py`\n5. 用户要求词块弹入 -> `template_word_pop.py`\n6. 用户要求滚动聚焦 -> `template_roll_focus.py`\n7. 仅句级普通上屏（无特殊效果）：\n   - 不要固定死一个模板；默认随机分流（可切换稳定模式用于复现）\n   - 可在 `template_slide_in_out.py` / `template_roll_focus.py` / `template_dual_track_motion.py` / `template_preset_transition.py` 间自动选择\n\n### 情况 2.2：需调整后套用\n\n若字幕结构不完整，先做最小补齐再套用模板：\n\n- 缺 `end`：用下一句 `start` 或当前 `start + 1~2s` 兜底\n- 缺词级时间戳：按句子时长均分到词/字\n- 毫秒与秒混用：统一转换为秒（float）\n- 空文本段：剔除\n- 时长异常（`end < start`）：修正为 `end = start`\n\n补齐完成后再次判断模板可用性，再进入套用。\n\n## 工作流构建规范\n\n目标是产出 `workflow_json`：\n- 顶层字段：`draft_id`（可选）、`inputs`、`script`\n- `script` 内步骤使用 `action/for/if/set_var`\n- 批量字幕写入优先用 `for + add_text (+ add_video_keyframe)`\n\n建议输出结构：\n\n```json\n{\n  \"draft_id\": \"可选，存在则复用\",\n  \"inputs\": {\n    \"subtitles\": []\n  },\n  \"script\": []\n}\n```\n\n说明：\n- 若用户已有 `draft_id`，必须放入请求体，基于原草稿继续编辑\n- 若没有 `draft_id`，不传该字段，由服务端新建草稿\n\n## 执行步骤（必须执行）\n\n1. 完成输入分流（1.1/1.2/1.3）\n2. 完成模板匹配（2.1/2.2）\n3. 生成 `workflow_json`（含 `inputs+script`，必要时含 `draft_id`）\n4. 调用 `POST /cut_jianying/execute_workflow`\n5. 返回结果中的：\n   - `success`\n   - `output.draft_id`\n   - `output.draft_url`\n   - `error`（若失败）\n\n## 口播自动包装\n\n当用户目标是“剪网感口播/开始剪口播/一键成片”，在字幕执行成功后必须追加以下步骤：\n\n1. `add-effect_audio`：开头 `target_start=0` 添加一次提示音\n2. `add-effect`：开头与重点句时间段各添加一次特效\n3. `add-bgm`：查询草稿时长后自动铺满背景音乐\n\n## 与用户交互规则\n\n- 情况 1.1 只做补全提示，不编造素材 URL\n- 情况 1.2 先告知“将先做 ASR 再套模板”，再执行\n- 模板不唯一时，给出简短推荐并默认选更稳的模板：\n  - 词级数据充分 -> 模板 A\n  - 仅句级数据 -> 模板 B\n\n## 输出要求\n\n- 成功：给出本次使用模板、关键处理（是否做补齐）、`draft_id`、`draft_url`\n- 失败：给出失败步骤（ASR / 模板构建 / execute_workflow）与原始错误信息\n- 不要输出与用户请求无关的长解释\n\nArchive v1.5.10: 69 files, 168386 bytes\n\nFiles: references/ai-image-model_capabilities.json (10444b), references/bgms.json (946b), references/cover_prompt_references.md (4610b), references/effect_audios.json (792b), references/model_capabilities.json (1589b), rules/add-bgm.md (3180b), rules/add-effect_audio.md (3093b), rules/add-effect.md (3440b), rules/add-preset.md (3493b), rules/add-subtitle-template.md (11561b), rules/add-title.md (2295b), rules/asr-vad.md (5309b), rules/cloud-render.md (2870b), rules/cut-koubo-template.md (8151b), rules/cut-koubo.md (15377b), rules/describe-video.md (4594b), rules/draft-downloader.md (2077b), rules/extract-audio.md (2079b), rules/feishu-bitetable-creator.md (11621b), rules/generate-ai-image.md (3818b), rules/generate-ai-video.md (2338b), rules/generate-cover.md (7184b), rules/human-pip.md (3867b), rules/llm-asr.md (5594b), rules/modify-draft.md (1739b), rules/query-draft.md (5274b), rules/scrapt-video.md (2727b), rules/speech-synthesis.md (2389b), rules/split-video.md (3097b), rules/sts-upload.md (3067b), rules/text-background.md (3612b), rules/text-keywords.md (4513b), rules/vectcut-api-search.md (1944b), rules/vectcut-login.md (2278b), rules/video-voiceover-remix.md (3215b), rules/zoom-in-out.md (3335b), scripts/add_bgm.py (8853b), scripts/add_effect_audio.py (7091b), scripts/add_effect.py (9762b), scripts/add_preset.py (3446b), scripts/add_title.py (4255b), scripts/apply_subtitle_template.py (9451b), scripts/asr_vad.py (8470b), scripts/cloud_render.py (3719b), scripts/describe_video.py (43676b), scripts/draft_downloader.py (3666b), scripts/extract_audio_async.py (4763b), scripts/generate_ai_image_async.py (9759b), scripts/generate_ai_video_async.py (8564b), scripts/human_pip_async.py (6246b), scripts/llm_asr_async.py (10652b), scripts/modify_draft.py (1879b), scripts/query_draft.py (1829b), scripts/remix_and_add_videos.py (7990b), scripts/scrapt_video.py (8592b), scripts/split_video_async.py (6874b), scripts/sts_upload.py (3716b), scripts/template_bilingual_keyword.py (36345b), scripts/template_dual_track_motion.py (16076b), scripts/template_karaoke_highlight.py (16617b), scripts/template_preset_transition.py (16122b), scripts/template_roll_focus.py (18402b), scripts/template_slide_in_out.py (4226b), scripts/template_word_pop.py (20763b), scripts/text_background_async.py (6422b), scripts/vectcut_login.py (2758b), scripts/zoom_in_out.py (16362b), SKILL.md (9035b), _meta.json (127b)\n\nFile v1.5.10:SKILL.md\n\n---\nname: vectcut-skill\ndescription: \"VectCut 全能剪辑聚合技能。用于剪口播、混剪、电商广告等场景，统一编排流光剪辑能力（字幕、音频、特效、画中画、抠像、AI补镜、AI配音、预设、平台视频抓取、渲染导出），也支持把既有视频制作流程整理为飞书多维表格自动化工作流。当用户提出“做成片/自动剪辑/口播包装/广告剪辑/抓平台视频后再剪”，或想把视频制作流程固化为飞书多维表格 AI Agent 工作流时，必须优先使用本技能。\"\nhomepage: \"https://www.vectcut.com/\"\nmetadata:\n  openclaw:\n    emoji: \"🎬\"\n    requires:\n      env: [\"VECTCUT_API_KEY\"]\n    primaryEnv: \"VECTCUT_API_KEY\"\ndependency:\n---\n\n## 触发场景\n\n- 口播自动成片、网感剪辑、去气口重排、口播包装\n- 混剪视频（多素材重组、节奏强化、字幕动画、转场特效）\n- 用户口语表达“混剪在一起 / 拼在一起 / 合成一条 / 随机拼接”这类意图\n- 电商广告（卖点强化、人物抠像、画中画、关键词强调、提示音）\n- 需要基于“预设片段”替换素材、组合复杂包装效果（如把 `text1` 改为指定文案）\n- 需要“抓取抖音/快手/小红书/B站/TikTok/YouTube 链接后分析并剪辑”\n- 想要查看VectCut 流光剪辑的API都支持哪些功能，具体API怎么使用。\n- 需要“AI 补镜 / AI 生成图片或视频 / AI 配音 / 云渲染导出”\n- 已有 `dfd_cat_` 草稿 ID，希望一键拉取到客户端（单个或批量）\n- 想把刚整理好的视频生产链路固化为飞书多维表格工作流，输出字段结构和 AI Agent 提示词\n\n## 统一前置规则（沿用）\n\n1. 任何 VectCut 调用前，先检查环境变量 `VECTCUT_API_KEY`（检查环境变量，不是本地配置文件）。默认通过 Bash 工具执行命令，包括windows环境也是。例如 `echo \"$VECTCUT_API_KEY\"` 或 `printenv VECTCUT_API_KEY` 来判断。\n2. 缺失、为空或鉴权失败时，先调用 `vectcut-login`\n3. 在进入任何具体技能链路前，优先先调用 `vectcut-api-search` 做一次全局能力扫描；因为它覆盖 VectCut 全量 API 索引、文件体量小、负担低，可以先快速掌握当前有哪些可用功能与接口入口\n4. 需要“在已有草稿继续编辑”时，输入参数必须显式携带 `draft_id`，并在后续所有写入接口（如 `add_video/add_audio/execute_workflow`）中持续透传同一个 `draft_id`\n5. 未传 `draft_id` 时，服务端通常会新建草稿；禁止在同一任务中混用多个草稿（避免字幕、音频落到不同草稿）\n6. 输入是本地素材路径时，先调用 `sts-upload` 转公网 URL 再继续\n7. 关键节点后调用 `query-draft` 做草稿校验\n8. 接口参数不确定、需要选型或报错时，用 `vectcut-api-search` 查询最新文档再修正；即使没有报错，也鼓励先用它确认是否已有更合适的现成接口\n## 场景路由策略（聚合编排）\n\n1. **平台链接输入**\n- 先走 `scrapt-video` 抓取视频信息与直链\n- 自动衔接 `describe-video` 做字幕+画面分析\n- 再按用户目标进入口播链、混剪链或广告链\n\n2. **口播成片（模板稳定链，默认优先）**\n- 口播成片默认优先走 `cut-koubo-template`（无需用户显式提及“模板”）\n- 去气口也属于口播剪辑场景，默认同样优先走 `cut-koubo-template`\n- 输入按模板接口严格校验（不同模板的必填参数不同，如 `title` 或 `kongjing_urls`）\n- 通过官方 `submit_agent_task` 固定链路出草稿，随后调用 `generate-cover`，并询问用户是否执行 `prepend_image` 插入首帧\n\n3. **口播成片（回退主链）**\n- 仅在模板链不适配（如模板必填参数无法满足）或用户明确要求开放式重排编排时，走 `cut-koubo`（包括去气口场景）\n- 最后可选 `cloud-render`\n\n4. **混剪链路**\n- `describe-video` 做素材盘点\n- `split-video` 切片重组\n- `add-subtitle-template` 字幕上屏（仅限已有字幕或需先从音视频生成字幕的场景）\n- `add-effect` / `zoom-in-out` 强化节奏\n- `add-bgm` + `add-effect_audio` 收口\n- `cloud-render` 导出\n\n4.1 **混剪配音成片（video-voiceover-remix 子链路）**\n- 触发词与同义表达：`混剪在一起`、`拼在一起`、`合成一条`、`随机拼接`、`多段视频组合`\n- 当用户只说“混剪在一起”且未给更细约束时，默认优先路由到 `video-voiceover-remix`，并在执行前简短告知将采用“混剪+解说+字幕+BGM”标准链路\n- 先按 `rules/video-voiceover-remix.md` 执行固定七步：`describe-video` -> `add_video(volume=-100)` -> 基于 `describe-video` 结果生成文案 -> `speech-synthesis + add_audio(volume=20)` -> `llm-asr(nlp) + add-subtitle-template` -> `add-bgm` -> `add-effect_audio`\n- 第 2 步重排优先调用内置脚本：`scripts/remix_and_add_videos.py`\n- 第 3 步文案字数按每秒 5 字估算\n- 第 4 步默认音色：`voice_id=gv_8195cd8b03f74658a9d92c9b2a9e9cba`，并提示用户可到 VectCut 官网查看可用音色\n\n5. **电商广告链路**\n- 人物突出优先：`human-pip` 或 `text-background`\n- 卖点强调：`text-keywords` + `add-title`\n- 素材不足：`generate-ai-image` / `generate-ai-video`\n- 配音需求：`speech-synthesis`\n- 包装完成后最终 `cloud-render`\n\n6. **草稿下载链路**\n- 用户提供一个或多个 `dfd_cat_` 草稿 ID 时，调用 `draft-downloader`\n- 先做去空、去重与 `dfd_cat_` 前缀校验，再触发 deeplink：`vectcut://download?draft_id=...`\n- 适合“下载草稿”“打开草稿到客户端”“批量拉取草稿”的需求\n\n7. **纯文字添加分流**\n- 用户只是要“添加一段文字/标题/说明文案/标签/贴纸文案”时，不要路由到 `add-subtitle-template`\n- 这类请求不是“字幕生成后上屏”链路，应先调用 `vectcut-api-search` 查找最新合适接口\n- 若语义明确是固定标题位，可进一步落到 `add-title`\n- 若是普通文字轨、动态文字或参数不确定，先以 `vectcut-api-search` 结果为准再执行\n\n8. **飞书多维表格工作流固化**\n- 当用户想把“刚才的视频制作流程”沉淀成飞书多维表格自动化时，路由到 `feishu-bitetable-creator`\n- 输入可以是自动化代码脚本，也可以是多轮对话摘要\n- 输出必须同时包含：`多维表格字段结构` 与 `飞书多维表格 AI Agent 工作流提示词`\n- 在工作流提示词里，几乎每个执行步骤都要明确先用 `vectcut-api-search` 确认最新接口、入参和返回结构\n- 飞书多维表格 AI Agent 有 20 次循环上限，所有异步任务统一采用“提交后等待 3 分钟再查结果”的保守策略\n\n## 字幕与音频规则\n\n- 若需口播精剪，优先 `llm-asr`(nlp档位) + `asr-vad`，确保字幕时间轴与剪辑后内容一致\n- 需要字幕上屏时，优先 `add-subtitle-template` 统一模板化输出；这里的“字幕”指随时间轴出现的字幕内容，不包含单独加一句普通文字\n- BGM 全片铺设用 `add-bgm`，关键点提示音用 `add-effect_audio`\n- 涉及“字幕+人声/音频”组合写入时，必须绑定同一个 `draft_id` 执行；任一步返回新 `draft_id` 时，后续步骤必须切换并统一使用该 `draft_id`\n\n## 输出要求\n\n- 至少返回：`draft_id`、`draft_url`\n- 同步返回：执行的技能链路摘要（调用顺序与关键结果）\n- 若失败：返回失败步骤、原始错误、建议修复动作（优先 `query-draft` + `vectcut-api-search`）\n- 用户要求导出成片时：调用 `cloud-render` 并返回可播放/下载地址\n\n## 目录索引\n\n- [add-bgm](rules/add-bgm.md)\n- [add-effect](rules/add-effect.md)\n- [add-effect_audio](rules/add-effect_audio.md)\n- [add-preset](rules/add-preset.md)\n- [add-subtitle-template](rules/add-subtitle-template.md)\n- [add-title](rules/add-title.md)\n- [asr-vad](rules/asr-vad.md)\n- [cloud-render](rules/cloud-render.md)\n- [cut-koubo](rules/cut-koubo.md)\n- [cut-koubo-template](rules/cut-koubo-template.md)\n- [describe-video](rules/describe-video.md)\n- [draft-downloader](rules/draft-downloader.md)\n- [extract-audio](rules/extract-audio.md)\n- [feishu-bitetable-creator](rules/feishu-bitetable-creator.md)\n- [generate-ai-image](rules/generate-ai-image.md)\n- [generate-ai-video](rules/generate-ai-video.md)\n- [generate-cover](rules/generate-cover.md)\n- [human-pip](rules/human-pip.md)\n- [llm-asr](rules/llm-asr.md)\n- [modify-draft](rules/modify-draft.md)\n- [query-draft](rules/query-draft.md)\n- [scrapt-video](rules/scrapt-video.md)\n- [speech-synthesis](rules/speech-synthesis.md)\n- [split-video](rules/split-video.md)\n- [sts-upload](rules/sts-upload.md)\n- [text-background](rules/text-background.md)\n- [text-keywords](rules/text-keywords.md)\n- [video-voiceover-remix](rules/video-voiceover-remix.md)\n- [vectcut-api-search](rules/vectcut-api-search.md)\n- [vectcut-login](rules/vectcut-login.md)\n- [zoom-in-out](rules/zoom-in-out.md)\n\nFile v1.5.10:_meta.json\n\n{\n  \"ownerId\": \"kn7cjw4v6q9zst2vc2w79er98h82a3wt\",\n  \"slug\": \"vectcut\",\n  \"version\": \"1.5.10\",\n  \"publishedAt\": 1779078511748\n}\n\nFile v1.5.10:references/ai-image-model_capabilities.json\n\n{\n  \"version\": \"2026-04-17\",\n  \"source_docs\": [\n    \"https://docs.vectcut.com/443760774e0\"\n  ],\n  \"reference_image_limit_exclusive\": 14,\n  \"models\": {\n    \"nano_banana_2\": {\n      \"aliases\": [\n        \"nano_banana_2\",\n        \"gemini-3.1-flash-image\",\n        \"gemini-3.1-flash-image-preview\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"848x1264\",\n        \"1264x848\",\n        \"896x1200\",\n        \"1200x896\",\n        \"928x1152\",\n        \"1152x928\",\n        \"768x1376\",\n        \"1376x768\",\n        \"1584x672\",\n        \"2048x2048\",\n        \"1696x2528\",\n        \"2528x1696\",\n        \"1792x2400\",\n        \"2400x1792\",\n        \"1856x2304\",\n        \"2304x1856\",\n        \"1536x2752\",\n        \"2752x1536\",\n        \"3168x1344\",\n        \"4096x4096\",\n        \"3392x5056\",\n        \"5056x3392\",\n        \"3584x4800\",\n        \"4800x3584\",\n        \"3712x4608\",\n        \"4608x3712\",\n        \"3072x5504\",\n        \"5504x3072\",\n        \"6336x2688\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"},\n          {\"size\": \"848x1264\", \"ratio\": \"2:3\"},\n          {\"size\": \"1264x848\", \"ratio\": \"3:2\"},\n          {\"size\": \"896x1200\", \"ratio\": \"3:4\"},\n          {\"size\": \"1200x896\", \"ratio\": \"4:3\"},\n          {\"size\": \"928x1152\", \"ratio\": \"4:5\"},\n          {\"size\": \"1152x928\", \"ratio\": \"5:4\"},\n          {\"size\": \"768x1376\", \"ratio\": \"9:16\"},\n          {\"size\": \"1376x768\", \"ratio\": \"16:9\"},\n          {\"size\": \"1584x672\", \"ratio\": \"21:9\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"1696x2528\", \"ratio\": \"2:3\"},\n          {\"size\": \"2528x1696\", \"ratio\": \"3:2\"},\n          {\"size\": \"1792x2400\", \"ratio\": \"3:4\"},\n          {\"size\": \"2400x1792\", \"ratio\": \"4:3\"},\n          {\"size\": \"1856x2304\", \"ratio\": \"4:5\"},\n          {\"size\": \"2304x1856\", \"ratio\": \"5:4\"},\n          {\"size\": \"1536x2752\", \"ratio\": \"9:16\"},\n          {\"size\": \"2752x1536\", \"ratio\": \"16:9\"},\n          {\"size\": \"3168x1344\", \"ratio\": \"21:9\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"3392x5056\", \"ratio\": \"2:3\"},\n          {\"size\": \"5056x3392\", \"ratio\": \"3:2\"},\n          {\"size\": \"3584x4800\", \"ratio\": \"3:4\"},\n          {\"size\": \"4800x3584\", \"ratio\": \"4:3\"},\n          {\"size\": \"3712x4608\", \"ratio\": \"4:5\"},\n          {\"size\": \"4608x3712\", \"ratio\": \"5:4\"},\n          {\"size\": \"3072x5504\", \"ratio\": \"9:16\"},\n          {\"size\": \"5504x3072\", \"ratio\": \"16:9\"},\n          {\"size\": \"6336x2688\", \"ratio\": \"21:9\"}\n        ]\n      }\n    },\n    \"nano_banana_pro\": {\n      \"aliases\": [\n        \"nano_banana_pro\",\n        \"gemini-3-pro-image-preview\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"848x1264\",\n        \"1264x848\",\n        \"896x1200\",\n        \"1200x896\",\n        \"928x1152\",\n        \"1152x928\",\n        \"768x1376\",\n        \"1376x768\",\n        \"1584x672\",\n        \"2048x2048\",\n        \"1696x2528\",\n        \"2528x1696\",\n        \"1792x2400\",\n        \"2400x1792\",\n        \"1856x2304\",\n        \"2304x1856\",\n        \"1536x2752\",\n        \"2752x1536\",\n        \"3168x1344\",\n        \"4096x4096\",\n        \"3392x5056\",\n        \"5056x3392\",\n        \"3584x4800\",\n        \"4800x3584\",\n        \"3712x4608\",\n        \"4608x3712\",\n        \"3072x5504\",\n        \"5504x3072\",\n        \"6336x2688\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"},\n          {\"size\": \"848x1264\", \"ratio\": \"2:3\"},\n          {\"size\": \"1264x848\", \"ratio\": \"3:2\"},\n          {\"size\": \"896x1200\", \"ratio\": \"3:4\"},\n          {\"size\": \"1200x896\", \"ratio\": \"4:3\"},\n          {\"size\": \"928x1152\", \"ratio\": \"4:5\"},\n          {\"size\": \"1152x928\", \"ratio\": \"5:4\"},\n          {\"size\": \"768x1376\", \"ratio\": \"9:16\"},\n          {\"size\": \"1376x768\", \"ratio\": \"16:9\"},\n          {\"size\": \"1584x672\", \"ratio\": \"21:9\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"1696x2528\", \"ratio\": \"2:3\"},\n          {\"size\": \"2528x1696\", \"ratio\": \"3:2\"},\n          {\"size\": \"1792x2400\", \"ratio\": \"3:4\"},\n          {\"size\": \"2400x1792\", \"ratio\": \"4:3\"},\n          {\"size\": \"1856x2304\", \"ratio\": \"4:5\"},\n          {\"size\": \"2304x1856\", \"ratio\": \"5:4\"},\n          {\"size\": \"1536x2752\", \"ratio\": \"9:16\"},\n          {\"size\": \"2752x1536\", \"ratio\": \"16:9\"},\n          {\"size\": \"3168x1344\", \"ratio\": \"21:9\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"3392x5056\", \"ratio\": \"2:3\"},\n          {\"size\": \"5056x3392\", \"ratio\": \"3:2\"},\n          {\"size\": \"3584x4800\", \"ratio\": \"3:4\"},\n          {\"size\": \"4800x3584\", \"ratio\": \"4:3\"},\n          {\"size\": \"3712x4608\", \"ratio\": \"4:5\"},\n          {\"size\": \"4608x3712\", \"ratio\": \"5:4\"},\n          {\"size\": \"3072x5504\", \"ratio\": \"9:16\"},\n          {\"size\": \"5504x3072\", \"ratio\": \"16:9\"},\n          {\"size\": \"6336x2688\", \"ratio\": \"21:9\"}\n        ]\n      }\n    },\n    \"gpt-image-2-all\": {\n      \"aliases\": [\n        \"gpt-image-2-all\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1254x1254\",\n        \"1448x1086\",\n        \"1086x1448\",\n        \"1672x941\",\n        \"941x1672\",\n        \"1537x1023\",\n        \"1023x1537\",\n        \"1915x821\",\n        \"2048x2048\",\n        \"2048x1152\",\n        \"1152x2048\",\n        \"3840x2160\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1254x1254\", \"ratio\": \"1:1\"},\n          {\"size\": \"1448x1086\", \"ratio\": \"4:3\"},\n          {\"size\": \"1086x1448\", \"ratio\": \"3:4\"},\n          {\"size\": \"1672x941\", \"ratio\": \"16:9\"},\n          {\"size\": \"941x1672\", \"ratio\": \"9:16\"},\n          {\"size\": \"1537x1023\", \"ratio\": \"3:2\"},\n          {\"size\": \"1023x1537\", \"ratio\": \"2:3\"},\n          {\"size\": \"1915x821\", \"ratio\": \"21:9\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2048x1152\", \"ratio\": \"16:9\"},\n          {\"size\": \"1152x2048\", \"ratio\": \"9:16\"}\n        ],\n        \"4K\": [\n          {\"size\": \"3840x2160\", \"ratio\": \"16:9\"}\n        ]\n      }\n    },\n    \"seedream-3.0\": {\n      \"aliases\": [\n        \"seedream-3.0\"\n      ],\n      \"supports_reference_images\": false,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"864x1152\",\n        \"1152x864\",\n        \"1280x720\",\n        \"720x1280\",\n        \"832x1248\",\n        \"1248x832\",\n        \"1512x648\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"},\n          {\"size\": \"864x1152\", \"ratio\": \"4:3\"},\n          {\"size\": \"1152x864\", \"ratio\": \"3:4\"},\n          {\"size\": \"1280x720\", \"ratio\": \"16:9\"},\n          {\"size\": \"720x1280\", \"ratio\": \"9:16\"},\n          {\"size\": \"832x1248\", \"ratio\": \"3:2\"},\n          {\"size\": \"1248x832\", \"ratio\": \"2:3\"},\n          {\"size\": \"1512x648\", \"ratio\": \"21:9\"}\n        ]\n      }\n    },\n    \"seedream-4.0\": {\n      \"aliases\": [\n        \"seedream-4.0\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"2048x2048\",\n        \"2304x1728\",\n        \"2496x1664\",\n        \"2560x1440\",\n        \"3024x1296\",\n        \"1440x2560\",\n        \"4096x4096\",\n        \"4694x3520\",\n        \"4992x3328\",\n        \"5404x3040\",\n        \"6198x2656\",\n        \"3040x5404\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2304x1728\", \"ratio\": \"4:3\"},\n          {\"size\": \"2496x1664\", \"ratio\": \"3:2\"},\n          {\"size\": \"2560x1440\", \"ratio\": \"16:9\"},\n          {\"size\": \"3024x1296\", \"ratio\": \"21:9\"},\n          {\"size\": \"1440x2560\", \"ratio\": \"9:16\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"4694x3520\", \"ratio\": \"4:3\"},\n          {\"size\": \"4992x3328\", \"ratio\": \"3:2\"},\n          {\"size\": \"5404x3040\", \"ratio\": \"16:9\"},\n          {\"size\": \"6198x2656\", \"ratio\": \"21:9\"},\n          {\"size\": \"3040x5404\", \"ratio\": \"9:16\"}\n        ]\n      }\n    },\n    \"seedream-4.5\": {\n      \"aliases\": [\n        \"seedream-4.5\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"2048x2048\",\n        \"2304x1728\",\n        \"2496x1664\",\n        \"2560x1440\",\n        \"3024x1296\",\n        \"1440x2560\",\n        \"4096x4096\",\n        \"4694x3520\",\n        \"4992x3328\",\n        \"5404x3040\",\n        \"6198x2656\",\n        \"3040x5404\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2304x1728\", \"ratio\": \"4:3\"},\n          {\"size\": \"2496x1664\", \"ratio\": \"3:2\"},\n          {\"size\": \"2560x1440\", \"ratio\": \"16:9\"},\n          {\"size\": \"3024x1296\", \"ratio\": \"21:9\"},\n          {\"size\": \"1440x2560\", \"ratio\": \"9:16\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"4694x3520\", \"ratio\": \"4:3\"},\n          {\"size\": \"4992x3328\", \"ratio\": \"3:2\"},\n          {\"size\": \"5404x3040\", \"ratio\": \"16:9\"},\n          {\"size\": \"6198x2656\", \"ratio\": \"21:9\"},\n          {\"size\": \"3040x5404\", \"ratio\": \"9:16\"}\n        ]\n      }\n    },\n    \"seedream-5.0\": {\n      \"aliases\": [\n        \"seedream-5.0\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"2048x2048\",\n        \"2304x1728\",\n        \"2496x1664\",\n        \"2560x1440\",\n        \"3024x1296\",\n        \"1440x2560\",\n        \"3072x3072\",\n        \"3456x2592\",\n        \"2592x3456\",\n        \"4096x2304\",\n        \"2304x4096\",\n        \"2496x3744\",\n        \"3744x2496\",\n        \"4704x2016\"\n      ],\n      \"size_profiles\": {\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2304x1728\", \"ratio\": \"4:3\"},\n          {\"size\": \"2496x1664\", \"ratio\": \"3:2\"},\n          {\"size\": \"2560x1440\", \"ratio\": \"16:9\"},\n          {\"size\": \"3024x1296\", \"ratio\": \"21:9\"},\n          {\"size\": \"1440x2560\", \"ratio\": \"9:16\"}\n        ],\n        \"3K\": [\n          {\"size\": \"3072x3072\", \"ratio\": \"1:1\"},\n          {\"size\": \"3456x2592\", \"ratio\": \"4:3\"},\n          {\"size\": \"2592x3456\", \"ratio\": \"3:4\"},\n          {\"size\": \"4096x2304\", \"ratio\": \"16:9\"},\n          {\"size\": \"2304x4096\", \"ratio\": \"9:16\"},\n          {\"size\": \"2496x3744\", \"ratio\": \"2:3\"},\n          {\"size\": \"3744x2496\", \"ratio\": \"3:2\"},\n          {\"size\": \"4704x2016\", \"ratio\": \"21:9\"}\n        ]\n      }\n    }\n  }\n}\n\nFile v1.5.10:references/bgms.json\n\n{\n  \"bgms\": [\n    \"https://player.install-ai-guider.top/koubo/bgm/void.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/time_to_pretend.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/the_right_path.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/spoons_for_loons.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/night_cruising.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Monsieur_melody.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/melody_mix.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/IV_feat.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Golden_hour.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Fight.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/%E5%BF%99%E7%A2%8C%E7%9A%84%E7%94%9F%E6%B4%BB%E4%BA%BA%E5%B1%B1%E4%BA%BA%E6%B5%B7.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/%E8%9D%B4%E8%9D%B6%E6%AD%A5.MP3\"\n  ]\n}\n\nFile v1.5.10:references/cover_prompt_references.md\n\n# Generate Cover Prompt References\n\n用于 `submit_task/generate` 前的提示词润色参考。请先理解草稿主题，再从下列风格中抽取表达，不要生硬照抄整段。\n\n## 使用规则\n\n- 目标：把 `query_script` 提取的主题、卖点、受众转成“可执行画面语言”。\n- 结构建议：`画面类型 + 主体 + 场景元素 + 构图/镜头 + 质感/色彩 + 文字排版要求(可选)`。\n- 优先“语义清洗”：将草稿里的原始字段、文件名、JSON 结构转为自然语言短语。\n- 可复用关键词：精准构图、视觉冲击力、高对比度、高饱和度、留白、层次、系列化风格。\n- 默认输出“海报封面”而非“纯场景图”：除非用户明确要求无字，必须写入标题文案与排版信息。\n- 文案字段建议：`主标题(headline)`、`副标题(subheadline)`、`角标/标签(badge)`、`位置(左上/中上/右下)`、`字体风格(粗体/手写/无衬线)`。\n- 母版选择建议：每次随机抽取 1 条参考提示词作为母版，不固定单一参考。\n- 人物口播约束：人物主体保持写实高保真（脸部特征/肤质/服饰不做卡通化）；风格化优先作用于背景、图形元素和文字排版。\n\n## 内置参考提示词（用户提供）\n\n### 参考 1：美式漫画综艺混剪\n\n创作一张美式漫画风的综艺混剪自媒体封面：背景为蓝色波点渐变底，搭配黄色闪电、星光、卡通点赞手等装饰元素；排版采用“顶部大标题 + 话题标签 + 人物周边气泡文案”的分层结构，顶部绿色对话框内用白色粗体字呈现“超闪亮时刻”，下方蓝色对话框内排版“# 高小定综艺混剪”；将参考图里的人物形象抠出，并且人物居中，周围环绕两个漫画风格气泡框，分别标注“接梗补刀”“高能救场”（字体为蓝色粗体，搭配白色外框）；整体色调以蓝、黄、绿为主，明亮活泼，风格融合美式漫画的夸张动感与综艺内容的吸睛属性，传递出热闹有趣的视觉效果。\n\n### 参考 2：杂志海报\n\n杂志风格,画面主体是冷艳时尚的人物，人物形象来源于参考图里的人物形象抠出，姿态张力十足。左上角以大号白色衬线字体呈现刊名《VOGUE》，字母锐利有质感；左侧中下部用黑色细体字竖排标注 “FEBRUARY 2025 | URBAN EDGE”，点明月份与主题；右下角则以金色小号字体印出 “COVER STAR: ELLA CHEN”，强化人物身份。背景为极简浅灰，黑色胶带元素穿插其中。光线是硬调侧光，塑造强烈阴影与时尚氛围。色彩黑、绿、白对比高级，构图中心对称。使用哈苏 H6D-100c，HC 80mm f/2.8，快门 1/250s，光圈 f/3.5，ISO 100。后期文字排版与画面风格统一，字体质感匹配整体冷冽高级感，让封面既具视觉冲击又信息清晰。\n\n### 参考 3：复古风海报\n\n复古风海报，采用拼贴艺术风格，主色调深咖加米黄色，背景融合做旧报纸、方格笔记本、复古磁带、老式电视机、复古包包，等怀旧元素，搭配回形针等文具装饰，元素大小对比；主体是参考图里的人物半身，整体风格兼具复古感与潮流感，色彩复古柔和，画面上方放主标题潮流粗体艺术文字突出 “周一复古穿搭”小号字色块垫底“甜酷 | 校园 | 潮流”，下描放小文案“更适合你的复古校园穿搭” ，搭配描边线，手绘小元素等营造出充满年代感又时尚的视觉效果。\n\n### 参考 4：杂志封面\n《时代周刊》封面，主角为一位杰出的人物封面，人物形象是从参考图里扣出来的。儒商风范：优雅、睿智且老练。留着修剪整齐的黑色短发，身着剪裁考究的深色西装。神情沉稳自信，带着一丝会意的微笑。灯光为戏剧性的高对比度影棚灯光，具有典型的杂志封面肖像风格。背景带有《时代周刊》标志性的红色边框。文字元素包括左上角的‘TIME’字样，“The New Visionary”的粗体经典衬线字体标题。照片级真实感，超高清细节，8k分辨率，电影级画质，眼睛部分对焦清晰。”\n\n## 润色产出模板（推荐）\n\n可在第 3 步前先整理成一段最终 prompt：\n\n`封面设计，{风格定位}。主体：{核心人物/核心物体}。场景：{关键场景元素}。构图与镜头：{景别/视角/运动感}。色彩与质感：{主色调/材质}。版式：{是否需要标题、副标题、角标及其位置}。整体目标：{吸睛点/转化目标}。`\n\nFile v1.5.10:references/effect_audios.json\n\n{\n  \"effect_audios\": [\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E6%89%93%E5%93%8D%E6%8C%87%E5%A3%B0.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%98%9F%E5%92%9A%E6%8F%90%E7%A4%BA%E9%9F%B3.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%9B%9E%E5%BF%86%E5%88%B7%E4%B8%80%E4%B8%8B.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%96%B7%E9%9B%BE%E5%89%82%E5%96%B7%E4%B8%80%E4%B8%8B.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%8D%81%E9%9D%A2%E5%9F%8B%E4%BC%8F%E5%97%AF.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E6%89%8B%E6%9C%BA%E9%94%AE%E7%9B%98%E6%89%93%E5%AD%972.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%BE%AE%E6%B3%A2%E7%82%89%E5%8F%AE.MP3\"\n  ]\n}\n\nFile v1.5.10:references/model_capabilities.json\n\n{\n  \"models\": {\n    \"veo3.1\": {\n      \"aliases\": [\"veo3.1\"],\n      \"allowed_resolutions\": [\"1920x1080\", \"1080x1920\", \"1280x720\", \"720x1280\"],\n      \"supports_images\": true,\n      \"max_images\": 3,\n      \"supports_gen_duration\": false,\n      \"allowed_gen_duration\": [],\n      \"supports_generate_audio\": false\n    },\n    \"veo3.1-pro\": {\n      \"aliases\": [\"veo3.1-pro\"],\n      \"allowed_resolutions\": [\"1920x1080\", \"1080x1920\", \"1280x720\", \"720x1280\"],\n      \"supports_images\": true,\n      \"max_images\": 3,\n      \"supports_gen_duration\": false,\n      \"allowed_gen_duration\": [],\n      \"supports_generate_audio\": false\n    },\n    \"seedance-1.5-pro\": {\n      \"aliases\": [\"seedance-1.5-pro\"],\n      \"allowed_resolutions\": [\n        \"1920x1080\",\n        \"1664x1248\",\n        \"1440x1440\",\n        \"1248x1664\",\n        \"1080x1920\",\n        \"2206x946\",\n        \"1280x720\",\n        \"1112x834\",\n        \"960x960\",\n        \"834x1112\",\n        \"720x1280\",\n        \"1470x630\",\n        \"864x496\",\n        \"752x560\",\n        \"640x640\",\n        \"560x752\",\n        \"496x864\",\n        \"992x432\"\n      ],\n      \"supports_images\": true,\n      \"max_images\": 10,\n      \"supports_gen_duration\": true,\n      \"allowed_gen_duration\": [4, 5, 6, 7, 8, 9, 10, 11, 12],\n      \"supports_generate_audio\": true\n    },\n    \"grok-video-3\": {\n      \"aliases\": [\"grok-video-3\"],\n      \"allowed_resolutions\": [\"1376x928\", \"928x1376\", \"560x560\"],\n      \"supports_images\": true,\n      \"max_images\": 1,\n      \"supports_gen_duration\": true,\n      \"allowed_gen_duration\": [6, 10, 15],\n      \"supports_generate_audio\": false\n    }\n  }\n}\n\nFile v1.5.10:rules/add-bgm.md\n\n---\nname: add-bgm\ndescription: \"为口播草稿自动添加背景音乐：先用 query-draft 获取草稿总时长，再用 get_duration 获取 BGM 时长，最后循环调用 add_audio 铺满全片。用户提到“加BGM/背景音乐/口播收尾配乐/自动铺满音频”时必须使用本技能。\"\n---\n\n# Add BGM Skill\n\n用于给口播类草稿在最后一步自动补背景音乐。核心是“查总时长 -> 查音频时长 -> 循环铺轨道”，避免手工反复添加。\n\n官方接口文档：\n- query_script: https://docs.vectcut.com/386764616e0\n- get_duration: https://docs.vectcut.com/328289318e0\n- add_audio: https://docs.vectcut.com/321196190e0\n\n## 何时使用\n\n- 用户要求“加背景音乐 / 加 BGM”\n- 用户希望把一段 BGM 自动铺满整条口播\n- 用户要在已有 `draft_id` 基础上追加音频轨道\n\n## 鉴权前置（必须）\n\n- 检查 `VECTCUT_API_KEY` 是否存在且有效\n- 缺失、为空或疑似失效时，先调用 `vectcut-login`\n\n## BGM 来源\n\n- 默认从技能内置白名单读取：`<skill-path>/references/bgms.json`\n- 若用户指定 `bgm_url`，优先使用该链接\n- 若未指定：\n  - 默认使用白名单第一条\n  - 也可通过 `bgm_index` 选择\n  - `random_bgm=true` 时随机选择\n\n## 执行流程（固定）\n\n1. 调用 `query_script` 获取草稿信息，读取 `draft.duration`（微秒）\n2. 将草稿时长转换为秒：`draft_duration_seconds = draft.duration / 1_000_000`\n3. 调用 `get_duration` 查询选中 BGM 的时长（秒）\n4. 按时间线循环调用 `add_audio`：\n   - 每段 `start=0`\n   - 每段 `target_start=当前累计位置`\n   - 每段 `end=min(bgm_duration, 剩余时长)`\n   - 直到覆盖完整草稿时长\n5. 返回最终 `draft_id`、`draft_url` 与每段素材写入结果\n\n## 执行方式\n\n准备请求 JSON，例如：\n\n```json\n{\n  \"draft_id\": \"dfd_xxx\",\n  \"bgm_index\": 0,\n  \"track_name\": \"audio_bgm\"\n}\n```\n\n执行脚本：\n\n```bash\npython <skill-path>/scripts/add_bgm.py \\\n  \"/tmp/add_bgm_payload.json\" \\\n  --output \"./add_bgm_result.json\"\n```\n\n## 输入说明\n\n- 必填：\n  - `draft_id`\n- 常用可选：\n  - `bgm_url`：直接指定背景音乐链接\n  - `bgm_index`：从白名单按索引选\n  - `random_bgm`：是否随机选白名单\n  - `track_name`：默认 `audio_bgm`\n  - `volume`：单位 dB，可选；不传时不主动设置，使用平台默认音量\n  - `speed`：默认 `1.0`\n  - `fade_in_duration` / `fade_out_duratioin`\n  - `bgm_list_path`：自定义白名单文件路径（推荐 JSON 格式：`{\"bgms\":[...]}`）\n\n## 输出结果\n\n默认输出 `add_bgm_result.json`，核心字段：\n- `meta.draft_duration_seconds`\n- `meta.bgm_duration_seconds`\n- `meta.segment_count`\n- `meta.selected_bgm_url`\n- `result.draft_id`\n- `result.draft_url`\n- `result.added_segments[]`\n\n## 失败处理建议\n\n- `VECTCUT_API_KEY` 缺失：先调用 `vectcut-login`\n- `draft_id` 无效：先用 `query-draft` 验证草稿可访问\n- 白名单无可用 URL：检查 `references/bgms.json` 或自定义 `bgm_list_path` 格式\n- `get_duration` 返回异常：检查 BGM 链接是否公网可访问\n- `add_audio` 失败：检查 `track_name/volume/speed` 参数合法性\n\nFile v1.5.10:rules/add-effect_audio.md\n\n---\nname: add-effect_audio\ndescription: \"在关键时间点为口播草稿添加短音效提示（一次即可，不铺满全片），用于开头抓注意力、重点关键词强化、画中画切入提示。用户提到“加提示音/重点音效/开头叮一下/关键词音效/画中画提示音”时必须使用本技能。\"\n---\n\n# Add Effect Audio Skill\n\n用于在关键位置添加“短提示音效”，强调当前讲述内容或画面重点。和背景音乐不同，本技能是单次点缀，不做全片铺满。\n\n官方接口文档：\n- get_duration: https://docs.vectcut.com/328289318e0\n- add_audio: https://docs.vectcut.com/321196190e0\n\n## 何时使用\n\n- 用户要求加“提示音/重点音效/叮一下”\n- 开头需要一个抓注意力的提示音\n- 中间出现重点关键词，需要声音强调\n- 画中画切入、重点镜头出现时，需要短音效提示\n\n## 鉴权前置（必须）\n\n- 检查 `VECTCUT_API_KEY` 是否可用\n- 缺失、为空或疑似失效时，先调用 `vectcut-login`\n\n## 音效来源\n\n- 默认读取技能内置白名单：`<skill-path>/references/effect_audios.json`\n- 若用户提供 `effect_audio_url`，优先使用用户链接\n- 若未指定：\n  - 默认取白名单第一条\n  - 可用 `effect_audio_index` 按序号选\n  - `random_effect_audio=true` 时随机选\n\n## 执行策略（与 BGM 区分）\n\n- 本技能默认“添加一次”即可，不循环铺满\n- 默认开头触发：`target_start=0`\n- 重点位由用户指定时间点：`target_start=<秒>`\n- 音效时长通过 `get_duration` 获取，默认整段添加；需要更短可传 `clip_duration`\n\n## 执行方式\n\n准备请求 JSON，例如：\n\n```json\n{\n  \"draft_id\": \"dfd_xxx\",\n  \"target_start\": 0.0,\n  \"effect_audio_index\": 0,\n  \"track_name\": \"audio_effect\",\n  \"volume\": 0.0\n}\n```\n\n执行脚本：\n\n```bash\npython <skill-path>/scripts/add_effect_audio.py \\\n  \"/tmp/add_effect_audio_payload.json\" \\\n  --output \"./add_effect_audio_result.json\"\n```\n\n## 输入说明\n\n- 必填：\n  - `draft_id`\n- 常用可选：\n  - `target_start`：音效放置时间点（秒），默认 `0.0`\n  - `effect_audio_url`：直接指定音效链接\n  - `effect_audio_index`：白名单索引\n  - `random_effect_audio`：是否随机选音效\n  - `clip_duration`：截取时长（秒），默认音效全长\n  - `track_name`：默认 `audio_effect`\n  - `volume`：单位 dB，默认 `0.0`\n  - `speed`：默认 `1.0`\n  - `effect_audio_list_path`：自定义音效白名单路径\n\n## 输出结果\n\n默认输出 `add_effect_audio_result.json`，核心字段：\n- `meta.selected_effect_audio_url`\n- `meta.source_duration_seconds`\n- `meta.clip_duration_seconds`\n- `meta.target_start_seconds`\n- `result.draft_id`\n- `result.draft_url`\n- `result.material_id`\n\n## 失败处理建议\n\n- `VECTCUT_API_KEY` 缺失：先调用 `vectcut-login`\n- `draft_id` 无效：先确认草稿可访问\n- 音效白名单为空：检查 `references/effect_audios.json` 或自定义列表\n- `get_duration` 失败：检查音效链接可访问性\n- `add_audio` 失败：检查 `target_start/volume/speed` 参数\n\nFile v1.5.10:rules/add-effect.md\n\n---\nname: add-effect\ndescription: \"为视频片段添加场景特效或人物特效，提升重点表达与画面丰富度。用户提到“加特效”“开头抓眼球”“强调某个画面细节”“口播悬疑氛围”“人物惊讶效果”时必须使用本技能。\"\n---\n\n# Add Effect Skill\n\n用于调用 VectCut `add_effect` 接口给视频草稿添加特效，适合以下场景：\n- 开头 1~3 秒抓眼球\n- 口播重点句强化\n- 悬疑/疑问语气氛围塑造\n- 电商带货细节放大、惊讶反应\n\n官方接口文档：\n- https://docs.vectcut.com/321244826e0\n- https://docs.vectcut.com/321245379e0\n- https://docs.vectcut.com/321245348e0\n\n## 何时使用\n\n- 用户说“给这段加特效”\n- 用户希望“重点处理某个片段”\n- 用户想让开场更有冲击力\n- 用户要在口播里做“悬疑/疑问/反向例子”氛围\n- 用户想强调商品细节、突出惊讶或灵感瞬间\n\n## 鉴权前置（必须）\n\n- 检查 `VECTCUT_API_KEY`\n- 缺失或疑似失效时，先调用 `vectcut-login`\n\n## 常用特效推荐（优先）\n\n- 场景特效 `聚光灯`：口播开头、悬疑、疑问\n- 场景特效 `暗角`：口播开头、悬疑、疑问\n- 场景特效 `放大镜`：电商细节强调\n- 场景特效 `模糊`：口播画中画背景、反向例子\n- 人物特效 `大头`：带货吃惊反应\n- 人物特效 `灵机一动`：重点表达、灵感瞬间\n\n## 可设置参数\n\n`add_effect` 常用参数：\n- `effect_type`：特效名称（必填）\n- `start`：开始时间（秒，默认 `0.0`）\n- `end`：结束时间（秒，默认 `3.0`）\n- `draft_id`：草稿 ID（可选）\n- `track_name`：特效轨道名（默认 `effect_01`）\n- `params`：特效参数数组（可选，数字列表；未传按系统默认）\n\n说明：\n- `params` 的含义因特效类型而异，不同特效支持的参数个数和范围不同。\n- 若不确定 `params`，建议先不传，使用特效默认参数更稳妥。\n\n## 执行方式\n\n先准备请求 JSON，例如：\n\n```json\n{\n  \"draft_id\": \"dfd_xxx\",\n  \"effect_type\": \"聚光灯\",\n  \"start\": 0.0,\n  \"end\": 2.8,\n  \"track_name\": \"effect_hook\",\n  \"effect_category\": \"scene\"\n}\n```\n\n执行：\n\n```bash\npython <skill-path>/scripts/add_effect.py \\\n  \"/tmp/add_effect_payload.json\" \\\n  --output \"./add_effect_result.json\"\n```\n\n## 查询可用特效（官方列表）\n\n查询场景特效：\n\n```bash\npython <skill-path>/scripts/add_effect.py --list-scene\n```\n\n查询人物特效：\n\n```bash\npython <skill-path>/scripts/add_effect.py --list-character\n```\n\n查询全部特效：\n\n```bash\npython <skill-path>/scripts/add_effect.py --list-all\n```\n\n## 输入说明\n\n- 必填：\n  - `effect_type`\n- 可选：\n  - `draft_id`\n  - `start`（默认 `0.0`）\n  - `end`（默认 `3.0`）\n  - `track_name`（默认 `effect_01`）\n  - `params`（数字数组）\n  - `width`（默认 `1080`）\n  - `height`（默认 `1920`）\n  - `effect_category`（`scene` / `character` / `auto`，默认 `auto`，仅用于校验与推荐）\n\n## 输出结果\n\n默认输出 `add_effect_result.json`，核心字段：\n- `meta.endpoint`\n- `meta.effect_type`\n- `meta.resolved_category`\n- `request_payload`\n- `result.raw_response`\n\n## 失败处理建议\n\n- `effect_type` 不存在：先用 `--list-scene` / `--list-character` 查询后重试\n- `end <= start`：修正时间区间\n- `params` 不兼容：去掉 `params` 先用默认值验证效果\n- 鉴权失败：先执行 `vectcut-login`\n\nFile v1.5.10:rules/add-preset.md\n\n---\nname: add-preset\ndescription: \"使用预设片段（preset）把已上传的预设模板插入到草稿并替换其中元素。适用于模板化替换素材、快速复用复杂包装效果。用户提到“预设片段/套预设”时必须优先使用本技能。\"\n---\n\n# Add Preset Skill\n\n用于在 VectCut 草稿中使用“预设片段（preset）”。预设是提前在剪映里编辑好的模板，可由图片、视频、文字、关键帧、音效等组合而成。`add-preset` 只负责“使用已上传预设”，不负责上传预设文件。\n\n官方文档：\n- https://docs.vectcut.com/372375099e0\n\n接口地址：\n- `POST https://open.vectcut.com/cut_jianying/add_preset`\n\n## 何时使用\n\n- 用户需要基于模板替换某些素材（图、视频、文案等）\n- 用户只想单独使用一个预设并替换单个字段（如 `preset_id=xxx`，把 `text1` 改为 `\"123\"`）\n- 用户要通过多个预设叠加实现复杂效果（如口播字幕、画中画、特效组合）\n\n## 预设上传边界（必须遵守）\n\n- 预设上传必须在客户端完成，`add-preset` 不提供上传能力\n- 当用户还没有 `preset_id` 时，必须先引导用户去客户端上传并拿到 `preset_id`\n- 只有拿到有效 `preset_id` 后，才进入预设使用流程\n\n## 使用前置（必须）\n\n- 检查 `VECTCUT_API_KEY`，缺失或失效时先走 `vectcut-login`\n- 请求前先阅读官方文档：https://docs.vectcut.com/372375099e0\n- 严格按文档确认该 `preset_id` 支持替换的元素类型与参数结构\n\n## 核心输入\n\n- 必填：`preset_id`（客户端上传后返回的预设 ID）\n- 可选：`draft_id`（目标草稿 ID；为空时由接口默认创建新草稿）\n- 可选：预设片段插入到草稿轨道上的目标时间`target_start`, 原始预设片段的截取时间`start`, `end`\n- 可选：预设内元素替换参数（如图片/视频/文字替换映射）\n\n说明：\n- 不同预设允许替换的元素和字段不同，必须按照用户要求的字段进行替换\n\n## 调用示例\n\n`curl` 示例：\n\n```bash\ncurl --location 'https://open.vectcut.com/cut_jianying/add_preset' \\\n  --header \"Authorization: Bearer ${VECTCUT_API_KEY}\" \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"preset_id\": \"b795a680-a581-4965-84b1-9e9ad313b522\",\n    \"replacements\": [\n      {\"text1\": \"流光剪辑\"},\n      {\"image1\": \"https://player.install-ai-guider.top/example/mao.webp\"},\n      {\"video1\": \"https://cdn.wanx.aliyuncs.com/wanx/1719234057367822001/text_to_video/092faf3c94244973ab752ee1280ba76f.mp4?file=092faf3c94244973ab752ee1280ba76f.mp4\"}\n    ],\n    \"target_start\": 2,\n    \"draft_id\": \"draft_456\",\n    \"transform_x\": 0.5,\n    \"transform_y\": 0.5,\n    \"rotation\": 0,\n    \"scale_x\": 1.0,\n    \"scale_y\": 1.0,\n    \"track_name\": \"my_preset_track\",\n    \"width\": 1080,\n    \"height\": 1920\n  }'\n```\n\n脚本调用示例（推荐统一用脚本）：\n\n```bash\npython <skill-path>/scripts/add_preset.py \\\n  \"/tmp/add_preset_payload.json\" \\\n  --output \"./add_preset_result.json\"\n```\n\n单独使用预设（仅替换 `text1`，不传 `draft_id` 由接口新建草稿）示例：\n\n```json\n{\n  \"preset_id\": \"xxx\",\n  \"replacements\": [\n    {\"text1\": \"123\"}\n  ]\n}\n```\n\n## 失败处理建议\n\n- 无 `preset_id`：明确告知先去客户端上传预设，再返回继续执行\n-  New segment overlaps错误，这表示目标轨道的目标时间范围已经有素材占位了，通常你需要设置track_name将当前预设放到其他轨道。\n\nFile v1.5.10:rules/add-subtitle-template.md\n\n---\nname: add-subtitle-template\ndescription: \"根据用户输入的音视频与结构化字幕信息，先生成或整理可上屏字幕，再自动选择并套用字幕模板，生成并执行 VectCut execute_workflow 批量写回字幕。用户提到“生成字幕并上屏/套字幕模板/按词字幕动画/基于音频或视频自动出字幕”时务必使用本技能；只要结果用于字幕上屏，严禁使用 basic 转写，必须走 nlp。若只是单纯添加一段文字、标题、标签、贴纸文案，不要使用本技能，应先走 vectcut-api-search 查找合适文字接口。\"\n---\n\n# Add Subtitle Template Skill\n\n把“字幕生成/整理 -> 模板匹配 -> 工作流执行”做成一条稳定链路，目标是批量添加模板字幕并返回可继续编辑的 `draft_id`。\n\n技能内置脚本（按 skill-creator 规范打包在 `scripts/`，必须优先用这些脚本）：\n- `<skill-path>/scripts/apply_subtitle_template.py`（统一入口：自动标准化 + 自动选模板）\n- `<skill-path>/scripts/template_word_pop.py`（词块弹入）\n- `<skill-path>/scripts/template_roll_focus.py`（滚动聚焦）\n- `<skill-path>/scripts/template_slide_in_out.py`（句级上滑入/上滑出）\n- `<skill-path>/scripts/template_karaoke_highlight.py`（逐词高亮 Karaoke）\n- `<skill-path>/scripts/template_dual_track_motion.py`（交替轨道 + 关键帧上移）\n- `<skill-path>/scripts/template_bilingual_keyword.py`（中英双语 + 关键词高亮）\n- `<skill-path>/scripts/template_preset_transition.py`（主字幕 + 预设转场）\n- 要求：先把用户输入字幕标准化为模板可接收结构，再调用模板函数产出 `draft_id + inputs + script`\n- 禁止直接重写模板逻辑；只允许做“输入映射/补齐”和“执行 workflow”\n\n## 字幕上屏硬约束\n\n- 只要进入“字幕模板/字幕上屏/草稿写回”链路，`effect_mode=basic` 一律拒绝执行\n- `basic` 仅允许用于素材分析与粗预览，不得作为上屏输入\n- 发现输入里标记为 `basic`（如 `meta.effect_mode=basic` 或 `meta.asr_effect_mode=basic`）时，必须报错并要求改为 `llm-asr --effect-mode nlp`\n\n字幕输入对齐规则（把用户字幕向 `scripts/` 模板输入靠拢）：\n- 所有模板函数签名都按 `func(segments, draft_id)` 调用，核心是先构造 `segments`\n- `segments` 标准项优先包含：`start`、`end`、`text`，单位统一毫秒\n- 若用户给的是秒：乘以 `1000` 转毫秒；若已是毫秒：保持不变\n- 若缺 `end`：用下一段 `start`，无下一段则用 `start + 1000~2000ms` 兜底\n- 若要走词块模板（`template_word_pop.py`）：尽量补 `phrase=[{text,start_time,end_time}]`，无词级时间则按句子时长均分\n- 若只具备句级字幕：优先走句级模板（`template_slide_in_out.py` / `template_roll_focus.py` / `template_dual_track_motion.py` / `template_preset_transition.py`）\n\n模板调用方式（固定）：\n- 优先调用统一入口：`python <skill-path>/scripts/apply_subtitle_template.py --input <subtitle_json> --draft-id <draft_id>`\n- 默认随机选模板；如需复现可追加 `--selection-mode stable`\n- 所有模板统一通过“命名入口函数”调用：`apply_template(segments, draft_id)`\n- 模板函数返回值直接作为 `execute_workflow` 的请求体（或其主体字段），不要手工重拼一套新脚本\n- 若用户显式指定模板文件名，优先按用户指定模板执行\n\n工作流接口文档：\n- https://docs.vectcut.com/363414609e0\n\n## 鉴权前置（必须）\n\n- 在调用 `llm-asr`、`execute_workflow` 或任何 VectCut 接口前，先检查环境变量 `VECTCUT_API_KEY`\n- 若未设置 `VECTCUT_API_KEY`，必须先调用 `vectcut-login` 技能完成登录和 token 校验，再继续本技能流程\n- 禁止在缺少 token 的情况下直接继续执行模板写入或工作流调用\n\n## 适用边界（必须先判断）\n\n- 本技能解决的是“字幕上屏”：字幕来源可以是已有 `segments`，也可以先从 `audio_url` / `video_url` 生成\n- 若用户只有音频或视频，本技能链路是“先用 `llm-asr(effect_mode=nlp)` 生成结构化字幕，再套模板写回草稿”\n- 若用户已经有结构化字幕和对应媒体，本技能直接做模板化上屏\n- 若用户只是要“添加一段文字/标题/说明文案/标签/贴纸文案”，这不是字幕生成链路，禁止触发本技能\n- 遇到“纯文字添加”诉求时，必须先转到 `vectcut-api-search` 检索合适接口（通常优先查 `add_text` 及其衍生能力）\n\n## 何时使用\n\n- 用户要“生成字幕并上屏”“添加模板字幕”“套用字幕模板”“词级字幕动画”\n- 用户给了音频或视频素材，希望先自动生成字幕，再完成模板字幕上屏\n- 用户给了结构化字幕 + 对应媒体，想把字幕批量写回已有或新建草稿\n- 用户给了 `draft_id`，希望在已有草稿继续做模板字幕上屏\n\n## 何时不要使用\n\n- 用户只是要加一句固定文案、标题、角标、贴纸文字、口播标题条\n- 用户的目标不是“字幕跟随时间轴上屏”，而是普通文字元素写入\n- 这类请求必须先走 `vectcut-api-search`，确认使用 `add_text`、`add_title` 或其他更合适接口\n\n## 输入识别（严格三分支）\n\n先判断用户输入是否包含以下数据：\n- 结构化字幕：`segments`（句级或词级时间戳，至少有 `start/end/text`）\n- 媒体信息：`audio_url` / `video_url`（可单独一种，也可都有）\n\n按以下顺序分流：\n\n1. **仅有字幕，无音视频（情况 1.1）**\n- 不执行模板写入\n- 明确提示用户补充可访问的 `audio_url` 或 `video_url`\n- 说明原因：缺少媒体来源会影响时间轴校验与可复现执行\n\n2. **仅有音视频，无结构化字幕（情况 1.2）**\n- 必须先调用 `llm-asr` 技能提取结构化字幕\n- 默认 `effect_mode` 固定 `nlp`\n- 必须先把原始素材写入草稿，再进入模板匹配：\n  - 有 `video_url`：调用 `add_video`（文档：https://docs.vectcut.com/321243745e0）\n  - 仅有 `audio_url`：调用 `add_audio`（文档：https://docs.vectcut.com/321196190e0）\n  - 默认参数约定：`start=0`、`end=0`（表示取到源素材结尾）、`target_start=0`\n  - `add_video` 关键字段：`video_url`, `start`, `end`, `target_start`, `track_name`, `draft_id`\n  - `add_audio` 关键字段：`audio_url`, `start`, `end`, `target_start`, `track_name`, `draft_id`\n  - `add_video` 请求示例：\n\n```bash\ncurl --location --request POST 'https://open.vectcut.com/cut_jianying/add_video' \\\n  --header 'Content-Type: application/json' \\\n  --header 'Authorization: Bearer <VECTCUT_API_KEY>' \\\n  --header 'Accept: */*' \\\n  --header 'Host: open.vectcut.com' \\\n  --header 'Connection: keep-alive' \\\n  --data-raw '{\n    \"video_url\": \"https://cdn.wanx.aliyuncs.com/wanx/1719234057367822001/text_to_video/092faf3c94244973ab752ee1280ba76f.mp4?spm=5176.29623064.0.0.41ed26d6cBOhV3&file=092faf3c94244973ab752ee1280ba76f.mp4\", // 视频链接\n    \"start\": 0, // 原视频的截取开始时间，默认0\n    \"end\": 0, // 原视频的截取结束时间，默认视频时长\n    \"target_start\": 0, // 视频插入轨道的开始时间，默认0\n    \"track_name\": \"video_main\",\n    \"draft_id\": \"<draft_id>\"\n  }'\n```\n\n  - `add_audio` 请求示例：\n\n```bash\ncurl --location --request POST 'https://open.vectcut.com/cut_jianying/add_audio' \\\n  --header 'Content-Type: application/json' \\\n  --header 'Authorization: Bearer <VECTCUT_API_KEY>' \\\n  --header 'Accept: */*' \\\n  --header 'Host: open.vectcut.com' \\\n  --header 'Connection: keep-alive' \\\n  --data-raw '{\n    \"audio_url\": \"https://lf3-lv-music-tos.faceu.com/obj/tos-cn-ve-2774/oYACBQRCMlWBIrZipvQZhI5LAlUFYii0RwEPh\",\n    \"start\": 0, // 原音频的截取开始时间，默认0\n    \"end\": 0, // 原音频的截取结束时间，默认音频时长\n    \"target_start\": 0,// 音频插入轨道的开始时间，默认0\n    \"track_name\": \"audio_main\",\n    \"draft_id\": \"<draft_id>\"\n  }'\n```\n  - 必须使用素材写回接口返回的 `draft_id` 作为后续编辑草稿 ID\n  - 后续 `llm-asr`、模板脚本与 `execute_workflow` 必须显式传入同一个 `draft_id`，禁止新建草稿分支\n- 拿到 `segments` 后，基于上述同一 `draft_id` 进入“模板匹配”步骤\n\n3. **音视频 + 结构化字幕都已具备（情况 1.3）**\n- 直接进入“模板匹配”步骤\n\n## 模板匹配（两种情况）\n\n### 情况 2.1：可直接套用\n\n当字幕结构满足模板最低要求时，直接套用。默认选型顺序：\n\n1. 有 `en` 字段或用户要求双语 -> `template_bilingual_keyword.py`\n2. 有完整 `words[].start_time/end_time` 且要逐词高亮 -> `template_karaoke_highlight.py`\n3. 用户要求预设样式/预设贴纸感 -> `template_preset_transition.py`\n4. 用户要求交替轨道、字幕位移动画 -> `template_dual_track_motion.py`\n5. 用户要求词块弹入 -> `template_word_pop.py`\n6. 用户要求滚动聚焦 -> `template_roll_focus.py`\n7. 仅句级普通上屏（无特殊效果）：\n   - 不要固定死一个模板；默认随机分流（可切换稳定模式用于复现）\n   - 可在 `template_slide_in_out.py` / `template_roll_focus.py` / `template_dual_track_motion.py` / `template_preset_transition.py` 间自动选择\n\n### 情况 2.2：需调整后套用\n\n若字幕结构不完整，先做最小补齐再套用模板：\n\n- 缺 `end`：用下一句 `start` 或当前 `start + 1~2s` 兜底\n- 缺词级时间戳：按句子时长均分到词/字\n- 毫秒与秒混用：统一转换为秒（float）\n- 空文本段：剔除\n- 时长异常（`end < start`）：修正为 `end = start`\n\n补齐完成后再次判断模板可用性，再进入套用。\n\n## 工作流构建规范\n\n目标是产出 `workflow_json`：\n- 顶层字段：`draft_id`（可选）、`inputs`、`script`\n- `script` 内步骤使用 `action/for/if/set_var`\n- 批量字幕写入优先用 `for + add_text (+ add_video_keyframe)`\n\n建议输出结构：\n\n```json\n{\n  \"draft_id\": \"可选，存在则复用\",\n  \"inputs\": {\n    \"subtitles\": []\n  },\n  \"script\": []\n}\n```\n\n说明：\n- 若用户已有 `draft_id`，必须放入请求体，基于原草稿继续编辑\n- 若没有 `draft_id`，不传该字段，由服务端新建草稿\n\n## 执行步骤（必须执行）\n\n1. 完成输入分流（1.1/1.2/1.3）\n2. 完成模板匹配（2.1/2.2）\n3. 生成 `workflow_json`（含 `inputs+script`，必要时含 `draft_id`）\n4. 调用 `POST /cut_jianying/execute_workflow`\n5. 返回结果中的：\n   - `success`\n   - `output.draft_id`\n   - `output.draft_url`\n   - `error`（若失败）\n\n## 口播自动包装\n\n当用户目标是“剪网感口播/开始剪口播/一键成片”，在字幕执行成功后必须追加以下步骤：\n\n1. `add-effect_audio`：开头 `target_start=0` 添加一次提示音\n2. `add-effect`：开头与重点句时间段各添加一次特效\n3. `add-bgm`：查询草稿时长后自动铺满背景音乐\n\n## 与用户交互规则\n\n- 情况 1.1 只做补全提示，不编造素材 URL\n- 情况 1.2 先告知“将先做 ASR 再套模板”，再执行\n- 模板不唯一时，给出简短推荐并默认选更稳的模板：\n  - 词级数据充分 -> 模板 A\n  - 仅句级数据 -> 模板 B\n\n## 输出要求\n\n- 成功：给出本次使用模板、关键处理（是否做补齐）、`draft_id`、`draft_url`\n- 失败：给出失败步骤（ASR / 模板构建 / execute_workflow）与原始错误信息\n- 不要输出与用户请求无关的长解释\n\nArchive v1.5.9: 69 files, 164248 bytes\n\nFiles: references/ai-image-model_capabilities.json (9334b), references/bgms.json (946b), references/cover_prompt_references.md (4610b), references/effect_audios.json (792b), references/model_capabilities.json (1893b), rules/add-bgm.md (3180b), rules/add-effect_audio.md (3093b), rules/add-effect.md (3440b), rules/add-preset.md (3493b), rules/add-subtitle-template.md (10282b), rules/add-title.md (2295b), rules/asr-vad.md (5309b), rules/cloud-render.md (2870b), rules/cut-koubo-template.md (8151b), rules/cut-koubo.md (15377b), rules/describe-video.md (4594b), rules/draft-downloader.md (2065b), rules/extract-audio.md (2079b), rules/generate-ai-image.md (3818b), rules/generate-ai-video.md (2338b), rules/generate-cover.md (7184b), rules/human-pip.md (3867b), rules/llm-asr.md (5594b), rules/modify-draft.md (1739b), rules/query-draft.md (5274b), rules/scrapt-video.md (2727b), rules/speech-synthesis.md (2389b), rules/split-video.md (3097b), rules/sts-upload.md (3067b), rules/text-background.md (3612b), rules/text-keywords.md (4513b), rules/vectcut-api-search.md (1931b), rules/vectcut-login.md (2278b), rules/video-voiceover-remix.md (3056b), rules/zoom-in-out.md (3335b), scripts/add_bgm.py (8853b), scripts/add_effect_audio.py (7091b), scripts/add_effect.py (9762b), scripts/add_preset.py (3446b), scripts/add_title.py (4255b), scripts/apply_subtitle_template.py (9451b), scripts/asr_vad.py (8470b), scripts/cloud_render.py (3719b), scripts/describe_video.py (43676b), scripts/draft_downloader.py (3654b), scripts/extract_audio_async.py (4763b), scripts/generate_ai_image_async.py (9741b), scripts/generate_ai_video_async.py (8564b), scripts/human_pip_async.py (6246b), scripts/llm_asr_async.py (10652b), scripts/modify_draft.py (1879b), scripts/query_draft.py (1829b), scripts/remix_and_add_videos.py (7990b), scripts/scrapt_video.py (8592b), scripts/search_vectcut_api.py (5827b), scripts/split_video_async.py (6874b), scripts/sts_upload.py (3716b), scripts/template_bilingual_keyword.py (36345b), scripts/template_dual_track_motion.py (16076b), scripts/template_karaoke_highlight.py (16617b), scripts/template_preset_transition.py (16122b), scripts/template_roll_focus.py (18402b), scripts/template_slide_in_out.py (4226b), scripts/template_word_pop.py (20763b), scripts/text_background_async.py (6422b), scripts/vectcut_login.py (2758b), scripts/zoom_in_out.py (16362b), SKILL.md (6950b), _meta.json (126b)\n\nFile v1.5.9:SKILL.md\n\n---\nname: vectcut-skill\ndescription: \"VectCut 全能剪辑聚合技能。用于剪口播、混剪、电商广告等场景，统一编排流光剪辑能力（字幕、音频、特效、画中画、抠像、AI补镜、AI配音、预设、平台视频抓取、渲染导出）。当用户提出“做成片/自动剪辑/口播包装/广告剪辑/抓平台视频后再剪”等需求时，必须优先使用本技能。\"\nhomepage: \"https://www.vectcut.com/\"\nmetadata:\n  openclaw:\n    emoji: \"🎬\"\n    requires:\n      env: [\"VECTCUT_API_KEY\"]\n    primaryEnv: \"VECTCUT_API_KEY\"\ndependency:\n---\n\n## 触发场景\n\n- 口播自动成片、网感剪辑、去气口重排、口播包装\n- 混剪视频（多素材重组、节奏强化、字幕动画、转场特效）\n- 用户口语表达“混剪在一起 / 拼在一起 / 合成一条 / 随机拼接”这类意图\n- 电商广告（卖点强化、人物抠像、画中画、关键词强调、提示音）\n- 需要基于“预设片段”替换素材、组合复杂包装效果（如把 `text1` 改为指定文案）\n- 需要“抓取抖音/快手/小红书/B站/TikTok/YouTube 链接后分析并剪辑”\n- 想要查看VectCut 流光剪辑的API都支持哪些功能，具体API怎么使用。\n- 需要“AI 补镜 / AI 生成图片或视频 / AI 配音 / 云渲染导出”\n- 已有 `dfd_cat_` 草稿 ID，希望一键拉取到客户端（单个或批量）\n\n## 统一前置规则（沿用）\n\n1. 任何 VectCut 调用前，先检查环境变量 `VECTCUT_API_KEY`（检查环境变量，不是本地配置文件）\n2. 缺失、为空或鉴权失败时，先调用 `vectcut-login`\n3. 需要“在已有草稿继续编辑”时，输入参数必须显式携带 `draft_id`，并在后续所有写入接口（如 `add_video/add_audio/execute_workflow`）中持续透传同一个 `draft_id`\n4. 未传 `draft_id` 时，服务端通常会新建草稿；禁止在同一任务中混用多个草稿（避免字幕、音频落到不同草稿）\n5. 输入是本地素材路径时，先调用 `sts-upload` 转公网 URL 再继续\n6. 关键节点后调用 `query-draft` 做草稿校验\n7. 接口参数不确定或报错时，用 `vectcut-api-search` 查询最新文档再修正\n## 场景路由策略（聚合编排）\n\n1. **平台链接输入**\n- 先走 `scrapt-video` 抓取视频信息与直链\n- 自动衔接 `describe-video` 做字幕+画面分析\n- 再按用户目标进入口播链、混剪链或广告链\n\n2. **口播成片（模板稳定链，默认优先）**\n- 口播成片默认优先走 `cut-koubo-template`（无需用户显式提及“模板”）\n- 去气口也属于口播剪辑场景，默认同样优先走 `cut-koubo-template`\n- 输入按模板接口严格校验（不同模板的必填参数不同，如 `title` 或 `kongjing_urls`）\n- 通过官方 `submit_agent_task` 固定链路出草稿，随后调用 `generate-cover`，并询问用户是否执行 `prepend_image` 插入首帧\n\n3. **口播成片（回退主链）**\n- 仅在模板链不适配（如模板必填参数无法满足）或用户明确要求开放式重排编排时，走 `cut-koubo`（包括去气口场景）\n- 最后可选 `cloud-render`\n\n4. **混剪链路**\n- `describe-video` 做素材盘点\n- `split-video` 切片重组\n- `add-subtitle-template` 字幕上屏（如果有字幕）\n- `add-effect` / `zoom-in-out` 强化节奏\n- `add-bgm` + `add-effect_audio` 收口\n- `cloud-render` 导出\n\n4.1 **混剪配音成片（video-voiceover-remix 子链路）**\n- 触发词与同义表达：`混剪在一起`、`拼在一起`、`合成一条`、`随机拼接`、`多段视频组合`\n- 当用户只说“混剪在一起”且未给更细约束时，默认优先路由到 `video-voiceover-remix`，并在执行前简短告知将采用“混剪+解说+字幕+BGM”标准链路\n- 先按 `rules/video-voiceover-remix.md` 执行固定七步：`describe-video` -> `add_video(volume=-100)` -> 文案生成 -> `speech-synthesis + add_audio(volume=20)` -> `llm-asr(nlp) + add-subtitle-template` -> `add-bgm` -> `add-effect_audio`\n- 第 2 步重排优先调用内置脚本：`scripts/remix_and_add_videos.py`\n- 第 3 步文案字数按每秒 1.5 字估算\n- 第 4 步默认音色：`voice_id=gv_8195cd8b03f74658a9d92c9b2a9e9cba`，并提示用户可到 VectCut 官网查看可用音色\n\n5. **电商广告链路**\n- 人物突出优先：`human-pip` 或 `text-background`\n- 卖点强调：`text-keywords` + `add-title`\n- 素材不足：`generate-ai-image` / `generate-ai-video`\n- 配音需求：`speech-synthesis`\n- 包装完成后最终 `cloud-render`\n\n6. **草稿下载链路**\n- 用户提供一个或多个 `dfd_cat_` 草稿 ID 时，调用 `draft-downloader`\n- 先做去空、去重与 `dfd_cat_` 前缀校验，再触发 deeplink：`vectcut://open?draft_id=...`\n- 适合“下载草稿”“打开草稿到客户端”“批量拉取草稿”的需求\n\n## 字幕与音频规则\n\n- 若需口播精剪，优先 `llm-asr`(nlp档位) + `asr-vad`，确保字幕时间轴与剪辑后内容一致\n- 需要字幕上屏时，优先 `add-subtitle-template` 统一模板化输出\n- BGM 全片铺设用 `add-bgm`，关键点提示音用 `add-effect_audio`\n- 涉及“字幕+人声/音频”组合写入时，必须绑定同一个 `draft_id` 执行；任一步返回新 `draft_id` 时，后续步骤必须切换并统一使用该 `draft_id`\n\n## 输出要求\n\n- 至少返回：`draft_id`、`draft_url`\n- 同步返回：执行的技能链路摘要（调用顺序与关键结果）\n- 若失败：返回失败步骤、原始错误、建议修复动作（优先 `query-draft` + `vectcut-api-search`）\n- 用户要求导出成片时：调用 `cloud-render` 并返回可播放/下载地址\n\n## 目录索引\n\n- [add-bgm](rules/add-bgm.md)\n- [add-effect](rules/add-effect.md)\n- [add-effect_audio](rules/add-effect_audio.md)\n- [add-preset](rules/add-preset.md)\n- [add-subtitle-template](rules/add-subtitle-template.md)\n- [add-title](rules/add-title.md)\n- [asr-vad](rules/asr-vad.md)\n- [cloud-render](rules/cloud-render.md)\n- [cut-koubo](rules/cut-koubo.md)\n- [cut-koubo-template](rules/cut-koubo-template.md)\n- [describe-video](rules/describe-video.md)\n- [draft-downloader](rules/draft-downloader.md)\n- [extract-audio](rules/extract-audio.md)\n- [generate-ai-image](rules/generate-ai-image.md)\n- [generate-ai-video](rules/generate-ai-video.md)\n- [generate-cover](rules/generate-cover.md)\n- [human-pip](rules/human-pip.md)\n- [llm-asr](rules/llm-asr.md)\n- [modify-draft](rules/modify-draft.md)\n- [query-draft](rules/query-draft.md)\n- [scrapt-video](rules/scrapt-video.md)\n- [speech-synthesis](rules/speech-synthesis.md)\n- [split-video](rules/split-video.md)\n- [sts-upload](rules/sts-upload.md)\n- [text-background](rules/text-background.md)\n- [text-keywords](rules/text-keywords.md)\n- [video-voiceover-remix](rules/video-voiceover-remix.md)\n- [vectcut-api-search](rules/vectcut-api-search.md)\n- [vectcut-login](rules/vectcut-login.md)\n- [zoom-in-out](rules/zoom-in-out.md)\n\nFile v1.5.9:_meta.json\n\n{\n  \"ownerId\": \"kn7cjw4v6q9zst2vc2w79er98h82a3wt\",\n  \"slug\": \"vectcut\",\n  \"version\": \"1.5.9\",\n  \"publishedAt\": 1778403042918\n}\n\nFile v1.5.9:references/ai-image-model_capabilities.json\n\n{\n  \"version\": \"2026-04-17\",\n  \"source_docs\": [\n    \"https://docs.vectcut.com/443760774e0\"\n  ],\n  \"reference_image_limit_exclusive\": 14,\n  \"models\": {\n    \"nano_banana_2\": {\n      \"aliases\": [\n        \"nano_banana_2\",\n        \"gemini-3.1-flash-image\",\n        \"gemini-3.1-flash-image-preview\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"848x1264\",\n        \"1264x848\",\n        \"896x1200\",\n        \"1200x896\",\n        \"928x1152\",\n        \"1152x928\",\n        \"768x1376\",\n        \"1376x768\",\n        \"1584x672\",\n        \"2048x2048\",\n        \"1696x2528\",\n        \"2528x1696\",\n        \"1792x2400\",\n        \"2400x1792\",\n        \"1856x2304\",\n        \"2304x1856\",\n        \"1536x2752\",\n        \"2752x1536\",\n        \"3168x1344\",\n        \"4096x4096\",\n        \"3392x5056\",\n        \"5056x3392\",\n        \"3584x4800\",\n        \"4800x3584\",\n        \"3712x4608\",\n        \"4608x3712\",\n        \"3072x5504\",\n        \"5504x3072\",\n        \"6336x2688\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"},\n          {\"size\": \"848x1264\", \"ratio\": \"2:3\"},\n          {\"size\": \"1264x848\", \"ratio\": \"3:2\"},\n          {\"size\": \"896x1200\", \"ratio\": \"3:4\"},\n          {\"size\": \"1200x896\", \"ratio\": \"4:3\"},\n          {\"size\": \"928x1152\", \"ratio\": \"4:5\"},\n          {\"size\": \"1152x928\", \"ratio\": \"5:4\"},\n          {\"size\": \"768x1376\", \"ratio\": \"9:16\"},\n          {\"size\": \"1376x768\", \"ratio\": \"16:9\"},\n          {\"size\": \"1584x672\", \"ratio\": \"21:9\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"1696x2528\", \"ratio\": \"2:3\"},\n          {\"size\": \"2528x1696\", \"ratio\": \"3:2\"},\n          {\"size\": \"1792x2400\", \"ratio\": \"3:4\"},\n          {\"size\": \"2400x1792\", \"ratio\": \"4:3\"},\n          {\"size\": \"1856x2304\", \"ratio\": \"4:5\"},\n          {\"size\": \"2304x1856\", \"ratio\": \"5:4\"},\n          {\"size\": \"1536x2752\", \"ratio\": \"9:16\"},\n          {\"size\": \"2752x1536\", \"ratio\": \"16:9\"},\n          {\"size\": \"3168x1344\", \"ratio\": \"21:9\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"3392x5056\", \"ratio\": \"2:3\"},\n          {\"size\": \"5056x3392\", \"ratio\": \"3:2\"},\n          {\"size\": \"3584x4800\", \"ratio\": \"3:4\"},\n          {\"size\": \"4800x3584\", \"ratio\": \"4:3\"},\n          {\"size\": \"3712x4608\", \"ratio\": \"4:5\"},\n          {\"size\": \"4608x3712\", \"ratio\": \"5:4\"},\n          {\"size\": \"3072x5504\", \"ratio\": \"9:16\"},\n          {\"size\": \"5504x3072\", \"ratio\": \"16:9\"},\n          {\"size\": \"6336x2688\", \"ratio\": \"21:9\"}\n        ]\n      }\n    },\n    \"nano_banana_pro\": {\n      \"aliases\": [\n        \"nano_banana_pro\",\n        \"gemini-3-pro-image-preview\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"848x1264\",\n        \"1264x848\",\n        \"896x1200\",\n        \"1200x896\",\n        \"928x1152\",\n        \"1152x928\",\n        \"768x1376\",\n        \"1376x768\",\n        \"1584x672\",\n        \"2048x2048\",\n        \"1696x2528\",\n        \"2528x1696\",\n        \"1792x2400\",\n        \"2400x1792\",\n        \"1856x2304\",\n        \"2304x1856\",\n        \"1536x2752\",\n        \"2752x1536\",\n        \"3168x1344\",\n        \"4096x4096\",\n        \"3392x5056\",\n        \"5056x3392\",\n        \"3584x4800\",\n        \"4800x3584\",\n        \"3712x4608\",\n        \"4608x3712\",\n        \"3072x5504\",\n        \"5504x3072\",\n        \"6336x2688\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"},\n          {\"size\": \"848x1264\", \"ratio\": \"2:3\"},\n          {\"size\": \"1264x848\", \"ratio\": \"3:2\"},\n          {\"size\": \"896x1200\", \"ratio\": \"3:4\"},\n          {\"size\": \"1200x896\", \"ratio\": \"4:3\"},\n          {\"size\": \"928x1152\", \"ratio\": \"4:5\"},\n          {\"size\": \"1152x928\", \"ratio\": \"5:4\"},\n          {\"size\": \"768x1376\", \"ratio\": \"9:16\"},\n          {\"size\": \"1376x768\", \"ratio\": \"16:9\"},\n          {\"size\": \"1584x672\", \"ratio\": \"21:9\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"1696x2528\", \"ratio\": \"2:3\"},\n          {\"size\": \"2528x1696\", \"ratio\": \"3:2\"},\n          {\"size\": \"1792x2400\", \"ratio\": \"3:4\"},\n          {\"size\": \"2400x1792\", \"ratio\": \"4:3\"},\n          {\"size\": \"1856x2304\", \"ratio\": \"4:5\"},\n          {\"size\": \"2304x1856\", \"ratio\": \"5:4\"},\n          {\"size\": \"1536x2752\", \"ratio\": \"9:16\"},\n          {\"size\": \"2752x1536\", \"ratio\": \"16:9\"},\n          {\"size\": \"3168x1344\", \"ratio\": \"21:9\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"3392x5056\", \"ratio\": \"2:3\"},\n          {\"size\": \"5056x3392\", \"ratio\": \"3:2\"},\n          {\"size\": \"3584x4800\", \"ratio\": \"3:4\"},\n          {\"size\": \"4800x3584\", \"ratio\": \"4:3\"},\n          {\"size\": \"3712x4608\", \"ratio\": \"4:5\"},\n          {\"size\": \"4608x3712\", \"ratio\": \"5:4\"},\n          {\"size\": \"3072x5504\", \"ratio\": \"9:16\"},\n          {\"size\": \"5504x3072\", \"ratio\": \"16:9\"},\n          {\"size\": \"6336x2688\", \"ratio\": \"21:9\"}\n        ]\n      }\n    },\n    \"seedream-3.0\": {\n      \"aliases\": [\n        \"seedream-3.0\"\n      ],\n      \"supports_reference_images\": false,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"864x1152\",\n        \"1152x864\",\n        \"1280x720\",\n        \"720x1280\",\n        \"832x1248\",\n        \"1248x832\",\n        \"1512x648\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"},\n          {\"size\": \"864x1152\", \"ratio\": \"4:3\"},\n          {\"size\": \"1152x864\", \"ratio\": \"3:4\"},\n          {\"size\": \"1280x720\", \"ratio\": \"16:9\"},\n          {\"size\": \"720x1280\", \"ratio\": \"9:16\"},\n          {\"size\": \"832x1248\", \"ratio\": \"3:2\"},\n          {\"size\": \"1248x832\", \"ratio\": \"2:3\"},\n          {\"size\": \"1512x648\", \"ratio\": \"21:9\"}\n        ]\n      }\n    },\n    \"seedream-4.0\": {\n      \"aliases\": [\n        \"seedream-4.0\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"2048x2048\",\n        \"2304x1728\",\n        \"2496x1664\",\n        \"2560x1440\",\n        \"3024x1296\",\n        \"1440x2560\",\n        \"4096x4096\",\n        \"4694x3520\",\n        \"4992x3328\",\n        \"5404x3040\",\n        \"6198x2656\",\n        \"3040x5404\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2304x1728\", \"ratio\": \"4:3\"},\n          {\"size\": \"2496x1664\", \"ratio\": \"3:2\"},\n          {\"size\": \"2560x1440\", \"ratio\": \"16:9\"},\n          {\"size\": \"3024x1296\", \"ratio\": \"21:9\"},\n          {\"size\": \"1440x2560\", \"ratio\": \"9:16\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"4694x3520\", \"ratio\": \"4:3\"},\n          {\"size\": \"4992x3328\", \"ratio\": \"3:2\"},\n          {\"size\": \"5404x3040\", \"ratio\": \"16:9\"},\n          {\"size\": \"6198x2656\", \"ratio\": \"21:9\"},\n          {\"size\": \"3040x5404\", \"ratio\": \"9:16\"}\n        ]\n      }\n    },\n    \"seedream-4.5\": {\n      \"aliases\": [\n        \"seedream-4.5\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"2048x2048\",\n        \"2304x1728\",\n        \"2496x1664\",\n        \"2560x1440\",\n        \"3024x1296\",\n        \"1440x2560\",\n        \"4096x4096\",\n        \"4694x3520\",\n        \"4992x3328\",\n        \"5404x3040\",\n        \"6198x2656\",\n        \"3040x5404\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2304x1728\", \"ratio\": \"4:3\"},\n          {\"size\": \"2496x1664\", \"ratio\": \"3:2\"},\n          {\"size\": \"2560x1440\", \"ratio\": \"16:9\"},\n          {\"size\": \"3024x1296\", \"ratio\": \"21:9\"},\n          {\"size\": \"1440x2560\", \"ratio\": \"9:16\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"4694x3520\", \"ratio\": \"4:3\"},\n          {\"size\": \"4992x3328\", \"ratio\": \"3:2\"},\n          {\"size\": \"5404x3040\", \"ratio\": \"16:9\"},\n          {\"size\": \"6198x2656\", \"ratio\": \"21:9\"},\n          {\"size\": \"3040x5404\", \"ratio\": \"9:16\"}\n        ]\n      }\n    },\n    \"seedream-5.0\": {\n      \"aliases\": [\n        \"seedream-5.0\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"2048x2048\",\n        \"2304x1728\",\n        \"2496x1664\",\n        \"2560x1440\",\n        \"3024x1296\",\n        \"1440x2560\",\n        \"3072x3072\",\n        \"3456x2592\",\n        \"2592x3456\",\n        \"4096x2304\",\n        \"2304x4096\",\n        \"2496x3744\",\n        \"3744x2496\",\n        \"4704x2016\"\n      ],\n      \"size_profiles\": {\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2304x1728\", \"ratio\": \"4:3\"},\n          {\"size\": \"2496x1664\", \"ratio\": \"3:2\"},\n          {\"size\": \"2560x1440\", \"ratio\": \"16:9\"},\n          {\"size\": \"3024x1296\", \"ratio\": \"21:9\"},\n          {\"size\": \"1440x2560\", \"ratio\": \"9:16\"}\n        ],\n        \"3K\": [\n          {\"size\": \"3072x3072\", \"ratio\": \"1:1\"},\n          {\"size\": \"3456x2592\", \"ratio\": \"4:3\"},\n          {\"size\": \"2592x3456\", \"ratio\": \"3:4\"},\n          {\"size\": \"4096x2304\", \"ratio\": \"16:9\"},\n          {\"size\": \"2304x4096\", \"ratio\": \"9:16\"},\n          {\"size\": \"2496x3744\", \"ratio\": \"2:3\"},\n          {\"size\": \"3744x2496\", \"ratio\": \"3:2\"},\n          {\"size\": \"4704x2016\", \"ratio\": \"21:9\"}\n        ]\n      }\n    }\n  }\n}\n\nFile v1.5.9:references/bgms.json\n\n{\n  \"bgms\": [\n    \"https://player.install-ai-guider.top/koubo/bgm/void.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/time_to_pretend.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/the_right_path.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/spoons_for_loons.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/night_cruising.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Monsieur_melody.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/melody_mix.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/IV_feat.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Golden_hour.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Fight.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/%E5%BF%99%E7%A2%8C%E7%9A%84%E7%94%9F%E6%B4%BB%E4%BA%BA%E5%B1%B1%E4%BA%BA%E6%B5%B7.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/%E8%9D%B4%E8%9D%B6%E6%AD%A5.MP3\"\n  ]\n}\n\nFile v1.5.9:references/cover_prompt_references.md\n\n# Generate Cover Prompt References\n\n用于 `submit_task/generate` 前的提示词润色参考。请先理解草稿主题，再从下列风格中抽取表达，不要生硬照抄整段。\n\n## 使用规则\n\n- 目标：把 `query_script` 提取的主题、卖点、受众转成“可执行画面语言”。\n- 结构建议：`画面类型 + 主体 + 场景元素 + 构图/镜头 + 质感/色彩 + 文字排版要求(可选)`。\n- 优先“语义清洗”：将草稿里的原始字段、文件名、JSON 结构转为自然语言短语。\n- 可复用关键词：精准构图、视觉冲击力、高对比度、高饱和度、留白、层次、系列化风格。\n- 默认输出“海报封面”而非“纯场景图”：除非用户明确要求无字，必须写入标题文案与排版信息。\n- 文案字段建议：`主标题(headline)`、`副标题(subheadline)`、`角标/标签(badge)`、`位置(左上/中上/右下)`、`字体风格(粗体/手写/无衬线)`。\n- 母版选择建议：每次随机抽取 1 条参考提示词作为母版，不固定单一参考。\n- 人物口播约束：人物主体保持写实高保真（脸部特征/肤质/服饰不做卡通化）；风格化优先作用于背景、图形元素和文字排版。\n\n## 内置参考提示词（用户提供）\n\n### 参考 1：美式漫画综艺混剪\n\n创作一张美式漫画风的综艺混剪自媒体封面：背景为蓝色波点渐变底，搭配黄色闪电、星光、卡通点赞手等装饰元素；排版采用“顶部大标题 + 话题标签 + 人物周边气泡文案”的分层结构，顶部绿色对话框内用白色粗体字呈现“超闪亮时刻”，下方蓝色对话框内排版“# 高小定综艺混剪”；将参考图里的人物形象抠出，并且人物居中，周围环绕两个漫画风格气泡框，分别标注“接梗补刀”“高能救场”（字体为蓝色粗体，搭配白色外框）；整体色调以蓝、黄、绿为主，明亮活泼，风格融合美式漫画的夸张动感与综艺内容的吸睛属性，传递出热闹有趣的视觉效果。\n\n### 参考 2：杂志海报\n\n杂志风格,画面主体是冷艳时尚的人物，人物形象来源于参考图里的人物形象抠出，姿态张力十足。左上角以大号白色衬线字体呈现刊名《VOGUE》，字母锐利有质感；左侧中下部用黑色细体字竖排标注 “FEBRUARY 2025 | URBAN EDGE”，点明月份与主题；右下角则以金色小号字体印出 “COVER STAR: ELLA CHEN”，强化人物身份。背景为极简浅灰，黑色胶带元素穿插其中。光线是硬调侧光，塑造强烈阴影与时尚氛围。色彩黑、绿、白对比高级，构图中心对称。使用哈苏 H6D-100c，HC 80mm f/2.8，快门 1/250s，光圈 f/3.5，ISO 100。后期文字排版与画面风格统一，字体质感匹配整体冷冽高级感，让封面既具视觉冲击又信息清晰。\n\n### 参考 3：复古风海报\n\n复古风海报，采用拼贴艺术风格，主色调深咖加米黄色，背景融合做旧报纸、方格笔记本、复古磁带、老式电视机、复古包包，等怀旧元素，搭配回形针等文具装饰，元素大小对比；主体是参考图里的人物半身，整体风格兼具复古感与潮流感，色彩复古柔和，画面上方放主标题潮流粗体艺术文字突出 “周一复古穿搭”小号字色块垫底“甜酷 | 校园 | 潮流”，下描放小文案“更适合你的复古校园穿搭” ，搭配描边线，手绘小元素等营造出充满年代感又时尚的视觉效果。\n\n### 参考 4：杂志封面\n《时代周刊》封面，主角为一位杰出的人物封面，人物形象是从参考图里扣出来的。儒商风范：优雅、睿智且老练。留着修剪整齐的黑色短发，身着剪裁考究的深色西装。神情沉稳自信，带着一丝会意的微笑。灯光为戏剧性的高对比度影棚灯光，具有典型的杂志封面肖像风格。背景带有《时代周刊》标志性的红色边框。文字元素包括左上角的‘TIME’字样，“The New Visionary”的粗体经典衬线字体标题。照片级真实感，超高清细节，8k分辨率，电影级画质，眼睛部分对焦清晰。”\n\n## 润色产出模板（推荐）\n\n可在第 3 步前先整理成一段最终 prompt：\n\n`封面设计，{风格定位}。主体：{核心人物/核心物体}。场景：{关键场景元素}。构图与镜头：{景别/视角/运动感}。色彩与质感：{主色调/材质}。版式：{是否需要标题、副标题、角标及其位置}。整体目标：{吸睛点/转化目标}。`\n\nFile v1.5.9:references/effect_audios.json\n\n{\n  \"effect_audios\": [\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E6%89%93%E5%93%8D%E6%8C%87%E5%A3%B0.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%98%9F%E5%92%9A%E6%8F%90%E7%A4%BA%E9%9F%B3.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%9B%9E%E5%BF%86%E5%88%B7%E4%B8%80%E4%B8%8B.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%96%B7%E9%9B%BE%E5%89%82%E5%96%B7%E4%B8%80%E4%B8%8B.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%8D%81%E9%9D%A2%E5%9F%8B%E4%BC%8F%E5%97%AF.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E6%89%8B%E6%9C%BA%E9%94%AE%E7%9B%98%E6%89%93%E5%AD%972.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%BE%AE%E6%B3%A2%E7%82%89%E5%8F%AE.MP3\"\n  ]\n}\n\nFile v1.5.9:references/model_capabilities.json\n\n{\n  \"models\": {\n    \"veo3.1\": {\n      \"aliases\": [\"veo3.1\"],\n      \"allowed_resolutions\": [\"1920x1080\", \"1080x1920\", \"1280x720\", \"720x1280\"],\n      \"supports_images\": true,\n      \"max_images\": 3,\n      \"supports_gen_duration\": false,\n      \"allowed_gen_duration\": [],\n      \"supports_generate_audio\": false\n    },\n    \"veo3.1-pro\": {\n      \"aliases\": [\"veo3.1-pro\"],\n      \"allowed_resolutions\": [\"1920x1080\", \"1080x1920\", \"1280x720\", \"720x1280\"],\n      \"supports_images\": true,\n      \"max_images\": 3,\n      \"supports_gen_duration\": false,\n      \"allowed_gen_duration\": [],\n      \"supports_generate_audio\": false\n    },\n    \"seedance-1.5-pro\": {\n      \"aliases\": [\"seedance-1.5-pro\"],\n      \"allowed_resolutions\": [\n        \"1920x1080\",\n        \"1664x1248\",\n        \"1440x1440\",\n        \"1248x1664\",\n        \"1080x1920\",\n        \"2206x946\",\n        \"1280x720\",\n        \"1112x834\",\n        \"960x960\",\n        \"834x1112\",\n        \"720x1280\",\n        \"1470x630\",\n        \"864x496\",\n        \"752x560\",\n        \"640x640\",\n        \"560x752\",\n        \"496x864\",\n        \"992x432\"\n      ],\n      \"supports_images\": true,\n      \"max_images\": 10,\n      \"supports_gen_duration\": true,\n      \"allowed_gen_duration\": [4, 5, 6, 7, 8, 9, 10, 11, 12],\n      \"supports_generate_audio\": true\n    },\n    \"grok-video-3\": {\n      \"aliases\": [\"grok-video-3\"],\n      \"allowed_resolutions\": [\"1376x928\", \"928x1376\", \"560x560\"],\n      \"supports_images\": true,\n      \"max_images\": 1,\n      \"supports_gen_duration\": true,\n      \"allowed_gen_duration\": [6, 10, 15],\n      \"supports_generate_audio\": false\n    },\n    \"sora2\": {\n      \"aliases\": [\"sora2\"],\n      \"allowed_resolutions\": [\"1920x1080\", \"1080x1920\", \"1280x720\", \"720x1280\"],\n      \"supports_images\": true,\n      \"max_images\": 2,\n      \"supports_gen_duration\": true,\n      \"allowed_gen_duration\": [5, 10, 15],\n      \"supports_generate_audio\": false\n    }\n  }\n}\n\nFile v1.5.9:rules/add-bgm.md\n\n---\nname: add-bgm\ndescription: \"为口播草稿自动添加背景音乐：先用 query-draft 获取草稿总时长，再用 get_duration 获取 BGM 时长，最后循环调用 add_audio 铺满全片。用户提到“加BGM/背景音乐/口播收尾配乐/自动铺满音频”时必须使用本技能。\"\n---\n\n# Add BGM Skill\n\n用于给口播类草稿在最后一步自动补背景音乐。核心是“查总时长 -> 查音频时长 -> 循环铺轨道”，避免手工反复添加。\n\n官方接口文档：\n- query_script: https://docs.vectcut.com/386764616e0\n- get_duration: https://docs.vectcut.com/328289318e0\n- add_audio: https://docs.vectcut.com/321196190e0\n\n## 何时使用\n\n- 用户要求“加背景音乐 / 加 BGM”\n- 用户希望把一段 BGM 自动铺满整条口播\n- 用户要在已有 `draft_id` 基础上追加音频轨道\n\n## 鉴权前置（必须）\n\n- 检查 `VECTCUT_API_KEY` 是否存在且有效\n- 缺失、为空或疑似失效时，先调用 `vectcut-login`\n\n## BGM 来源\n\n- 默认从技能内置白名单读取：`<skill-path>/references/bgms.json`\n- 若用户指定 `bgm_url`，优先使用该链接\n- 若未指定：\n  - 默认使用白名单第一条\n  - 也可通过 `bgm_index` 选择\n  - `random_bgm=true` 时随机选择\n\n## 执行流程（固定）\n\n1. 调用 `query_script` 获取草稿信息，读取 `draft.duration`（微秒）\n2. 将草稿时长转换为秒：`draft_duration_seconds = draft.duration / 1_000_000`\n3. 调用 `get_duration` 查询选中 BGM 的时长（秒）\n4. 按时间线循环调用 `add_audio`：\n   - 每段 `start=0`\n   - 每段 `target_start=当前累计位置`\n   - 每段 `end=min(bgm_duration, 剩余时长)`\n   - 直到覆盖完整草稿时长\n5. 返回最终 `draft_id`、`draft_url` 与每段素材写入结果\n\n## 执行方式\n\n准备请求 JSON，例如：\n\n```json\n{\n  \"draft_id\": \"dfd_xxx\",\n  \"bgm_index\": 0,\n  \"track_name\": \"audio_bgm\"\n}\n```\n\n执行脚本：\n\n```bash\npython <skill-path>/scripts/add_bgm.py \\\n  \"/tmp/add_bgm_payload.json\" \\\n  --output \"./add_bgm_result.json\"\n```\n\n## 输入说明\n\n- 必填：\n  - `draft_id`\n- 常用可选：\n  - `bgm_url`：直接指定背景音乐链接\n  - `bgm_index`：从白名单按索引选\n  - `random_bgm`：是否随机选白名单\n  - `track_name`：默认 `audio_bgm`\n  - `volume`：单位 dB，可选；不传时不主动设置，使用平台默认音量\n  - `speed`：默认 `1.0`\n  - `fade_in_duration` / `fade_out_duratioin`\n  - `bgm_list_path`：自定义白名单文件路径（推荐 JSON 格式：`{\"bgms\":[...]}`）\n\n## 输出结果\n\n默认输出 `add_bgm_result.json`，核心字段：\n- `meta.draft_duration_seconds`\n- `meta.bgm_duration_seconds`\n- `meta.segment_count`\n- `meta.selected_bgm_url`\n- `result.draft_id`\n- `result.draft_url`\n- `result.added_segments[]`\n\n## 失败处理建议\n\n- `VECTCUT_API_KEY` 缺失：先调用 `vectcut-login`\n- `draft_id` 无效：先用 `query-draft` 验证草稿可访问\n- 白名单无可用 URL：检查 `references/bgms.json` 或自定义 `bgm_list_path` 格式\n- `get_duration` 返回异常：检查 BGM 链接是否公网可访问\n- `add_audio` 失败：检查 `track_name/volume/speed` 参数合法性\n\nFile v1.5.9:rules/add-effect_audio.md\n\n---\nname: add-effect_audio\ndescription: \"在关键时间点为口播草稿添加短音效提示（一次即可，不铺满全片），用于开头抓注意力、重点关键词强化、画中画切入提示。用户提到“加提示音/重点音效/开头叮一下/关键词音效/画中画提示音”时必须使用本技能。\"\n---\n\n# Add Effect Audio Skill\n\n用于在关键位置添加“短提示音效”，强调当前讲述内容或画面重点。和背景音乐不同，本技能是单次点缀，不做全片铺满。\n\n官方接口文档：\n- get_duration: https://docs.vectcut.com/328289318e0\n- add_audio: https://docs.vectcut.com/321196190e0\n\n## 何时使用\n\n- 用户要求加“提示音/重点音效/叮一下”\n- 开头需要一个抓注意力的提示音\n- 中间出现重点关键词，需要声音强调\n- 画中画切入、重点镜头出现时，需要短音效提示\n\n## 鉴权前置（必须）\n\n- 检查 `VECTCUT_API_KEY` 是否可用\n- 缺失、为空或疑似失效时，先调用 `vectcut-login`\n\n## 音效来源\n\n- 默认读取技能内置白名单：`<skill-path>/references/effect_audios.json`\n- 若用户提供 `effect_audio_url`，优先使用用户链接\n- 若未指定：\n  - 默认取白名单第一条\n  - 可用 `effect_audio_index` 按序号选\n  - `random_effect_audio=true` 时随机选\n\n## 执行策略（与 BGM 区分）\n\n- 本技能默认“添加一次”即可，不循环铺满\n- 默认开头触发：`target_start=0`\n- 重点位由用户指定时间点：`target_start=<秒>`\n- 音效时长通过 `get_duration` 获取，默认整段添加；需要更短可传 `clip_duration`\n\n## 执行方式\n\n准备请求 JSON，例如：\n\n```json\n{\n  \"draft_id\": \"dfd_xxx\",\n  \"target_start\": 0.0,\n  \"effect_audio_index\": 0,\n  \"track_name\": \"audio_effect\",\n  \"volume\": 0.0\n}\n```\n\n执行脚本：\n\n```bash\npython <skill-path>/scripts/add_effect_audio.py \\\n  \"/tmp/add_effect_audio_payload.json\" \\\n  --output \"./add_effect_audio_result.json\"\n```\n\n## 输入说明\n\n- 必填：\n  - `draft_id`\n- 常用可选：\n  - `target_start`：音效放置时间点（秒），默认 `0.0`\n  - `effect_audio_url`：直接指定音效链接\n  - `effect_audio_index`：白名单索引\n  - `random_effect_audio`：是否随机选音效\n  - `clip_duration`：截取时长（秒），默认音效全长\n  - `track_name`：默认 `audio_effect`\n  - `volume`：单位 dB，默认 `0.0`\n  - `speed`：默认 `1.0`\n  - `effect_audio_list_path`：自定义音效白名单路径\n\n## 输出结果\n\n默认输出 `add_effect_audio_result.json`，核心字段：\n- `meta.selected_effect_audio_url`\n- `meta.source_duration_seconds`\n- `meta.clip_duration_seconds`\n- `meta.target_start_seconds`\n- `result.draft_id`\n- `result.draft_url`\n- `result.material_id`\n\n## 失败处理建议\n\n- `VECTCUT_API_KEY` 缺失：先调用 `vectcut-login`\n- `draft_id` 无效：先确认草稿可访问\n- 音效白名单为空：检查 `references/effect_audios.json` 或自定义列表\n- `get_duration` 失败：检查音效链接可访问性\n- `add_audio` 失败：检查 `target_start/volume/speed` 参数\n\nFile v1.5.9:rules/add-effect.md\n\n---\nname: add-effect\ndescription: \"为视频片段添加场景特效或人物特效，提升重点表达与画面丰富度。用户提到“加特效”“开头抓眼球”“强调某个画面细节”“口播悬疑氛围”“人物惊讶效果”时必须使用本技能。\"\n---\n\n# Add Effect Skill\n\n用于调用 VectCut `add_effect` 接口给视频草稿添加特效，适合以下场景：\n- 开头 1~3 秒抓眼球\n- 口播重点句强化\n- 悬疑/疑问语气氛围塑造\n- 电商带货细节放大、惊讶反应\n\n官方接口文档：\n- https://docs.vectcut.com/321244826e0\n- https://docs.vectcut.com/321245379e0\n- https://docs.vectcut.com/321245348e0\n\n## 何时使用\n\n- 用户说“给这段加特效”\n- 用户希望“重点处理某个片段”\n- 用户想让开场更有冲击力\n- 用户要在口播里做“悬疑/疑问/反向例子”氛围\n- 用户想强调商品细节、突出惊讶或灵感瞬间\n\n## 鉴权前置（必须）\n\n- 检查 `VECTCUT_API_KEY`\n- 缺失或疑似失效时，先调用 `vectcut-login`\n\n## 常用特效推荐（优先）\n\n- 场景特效 `聚光灯`：口播开头、悬疑、疑问\n- 场景特效 `暗角`：口播开头、悬疑、疑问\n- 场景特效 `放大镜`：电商细节强调\n- 场景特效 `模糊`：口播画中画背景、反向例子\n- 人物特效 `大头`：带货吃惊反应\n- 人物特效 `灵机一动`：重点表达、灵感瞬间\n\n## 可设置参数\n\n`add_effect` 常用参数：\n- `effect_type`：特效名称（必填）\n- `start`：开始时间（秒，默认 `0.0`）\n- `end`：结束时间（秒，默认 `3.0`）\n- `draft_id`：草稿 ID（可选）\n- `track_name`：特效轨道名（默认 `effect_01`）\n- `params`：特效参数数组（可选，数字列表；未传按系统默认）\n\n说明：\n- `params` 的含义因特效类型而异，不同特效支持的参数个数和范围不同。\n- 若不确定 `params`，建议先不传，使用特效默认参数更稳妥。\n\n## 执行方式\n\n先准备请求 JSON，例如：\n\n```json\n{\n  \"draft_id\": \"dfd_xxx\",\n  \"effect_type\": \"聚光灯\",\n  \"start\": 0.0,\n  \"end\": 2.8,\n  \"track_name\": \"effect_hook\",\n  \"effect_category\": \"scene\"\n}\n```\n\n执行：\n\n```bash\npython <skill-path>/scripts/add_effect.py \\\n  \"/tmp/add_effect_payload.json\" \\\n  --output \"./add_effect_result.json\"\n```\n\n## 查询可用特效（官方列表）\n\n查询场景特效：\n\n```bash\npython <skill-path>/scripts/add_effect.py --list-scene\n```\n\n查询人物特效：\n\n```bash\npython <skill-path>/scripts/add_effect.py --list-character\n```\n\n查询全部特效：\n\n```bash\npython <skill-path>/scripts/add_effect.py --list-all\n```\n\n## 输入说明\n\n- 必填：\n  - `effect_type`\n- 可选：\n  - `draft_id`\n  - `start`（默认 `0.0`）\n  - `end`（默认 `3.0`）\n  - `track_name`（默认 `effect_01`）\n  - `params`（数字数组）\n  - `width`（默认 `1080`）\n  - `height`（默认 `1920`）\n  - `effect_category`（`scene` / `character` / `auto`，默认 `auto`，仅用于校验与推荐）\n\n## 输出结果\n\n默认输出 `add_effect_result.json`，核心字段：\n- `meta.endpoint`\n- `meta.effect_type`\n- `meta.resolved_category`\n- `request_payload`\n- `result.raw_response`\n\n## 失败处理建议\n\n- `effect_type` 不存在：先用 `--list-scene` / `--list-character` 查询后重试\n- `end <= start`：修正时间区间\n- `params` 不兼容：去掉 `params` 先用默认值验证效果\n- 鉴权失败：先执行 `vectcut-login`\n\nFile v1.5.9:rules/add-preset.md\n\n---\nname: add-preset\ndescription: \"使用预设片段（preset）把已上传的预设模板插入到草稿并替换其中元素。适用于模板化替换素材、快速复用复杂包装效果。用户提到“预设片段/套预设”时必须优先使用本技能。\"\n---\n\n# Add Preset Skill\n\n用于在 VectCut 草稿中使用“预设片段（preset）”。预设是提前在剪映里编辑好的模板，可由图片、视频、文字、关键帧、音效等组合而成。`add-preset` 只负责“使用已上传预设”，不负责上传预设文件。\n\n官方文档：\n- https://docs.vectcut.com/372375099e0\n\n接口地址：\n- `POST https://open.vectcut.com/cut_jianying/add_preset`\n\n## 何时使用\n\n- 用户需要基于模板替换某些素材（图、视频、文案等）\n- 用户只想单独使用一个预设并替换单个字段（如 `preset_id=xxx`，把 `text1` 改为 `\"123\"`）\n- 用户要通过多个预设叠加实现复杂效果（如口播字幕、画中画、特效组合）\n\n## 预设上传边界（必须遵守）\n\n- 预设上传必须在客户端完成，`add-preset` 不提供上传能力\n- 当用户还没有 `preset_id` 时，必须先引导用户去客户端上传并拿到 `preset_id`\n- 只有拿到有效 `preset_id` 后，才进入预设使用流程\n\n## 使用前置（必须）\n\n- 检查 `VECTCUT_API_KEY`，缺失或失效时先走 `vectcut-login`\n- 请求前先阅读官方文档：https://docs.vectcut.com/372375099e0\n- 严格按文档确认该 `preset_id` 支持替换的元素类型与参数结构\n\n## 核心输入\n\n- 必填：`preset_id`（客户端上传后返回的预设 ID）\n- 可选：`draft_id`（目标草稿 ID；为空时由接口默认创建新草稿）\n- 可选：预设片段插入到草稿轨道上的目标时间`target_start`, 原始预设片段的截取时间`start`, `end`\n- 可选：预设内元素替换参数（如图片/视频/文字替换映射）\n\n说明：\n- 不同预设允许替换的元素和字段不同，必须按照用户要求的字段进行替换\n\n## 调用示例\n\n`curl` 示例：\n\n```bash\ncurl --location 'https://open.vectcut.com/cut_jianying/add_preset' \\\n  --header \"Authorization: Bearer ${VECTCUT_API_KEY}\" \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"preset_id\": \"b795a680-a581-4965-84b1-9e9ad313b522\",\n    \"replacements\": [\n      {\"text1\": \"流光剪辑\"},\n      {\"image1\": \"https://player.install-ai-guider.top/example/mao.webp\"},\n      {\"video1\": \"https://cdn.wanx.aliyuncs.com/wanx/1719234057367822001/text_to_video/092faf3c94244973ab752ee1280ba76f.mp4?file=092faf3c94244973ab752ee1280ba76f.mp4\"}\n    ],\n    \"target_start\": 2,\n    \"draft_id\": \"draft_456\",\n    \"transform_x\": 0.5,\n    \"transform_y\": 0.5,\n    \"rotation\": 0,\n    \"scale_x\": 1.0,\n    \"scale_y\": 1.0,\n    \"track_name\": \"my_preset_track\",\n    \"width\": 1080,\n    \"height\": 1920\n  }'\n```\n\n脚本调用示例（推荐统一用脚本）：\n\n```bash\npython <skill-path>/scripts/add_preset.py \\\n  \"/tmp/add_preset_payload.json\" \\\n  --output \"./add_preset_result.json\"\n```\n\n单独使用预设（仅替换 `text1`，不传 `draft_id` 由接口新建草稿）示例：\n\n```json\n{\n  \"preset_id\": \"xxx\",\n  \"replacements\": [\n    {\"text1\": \"123\"}\n  ]\n}\n```\n\n## 失败处理建议\n\n- 无 `preset_id`：明确告知先去客户端上传预设，再返回继续执行\n-  New segment overlaps错误，这表示目标轨道的目标时间范围已经有素材占位了，通常你需要设置track_name将当前预设放到其他轨道。\n\nFile v1.5.9:rules/add-subtitle-template.md\n\n---\nname: add-subtitle-template\ndescription: \"根据用户输入的音视频与字幕信息，自动选择并套用字幕模板，生成并执行 VectCut execute_workflow 批量加字幕。用户提到“添加模板字幕/套字幕模板/批量加字幕/按词字幕动画”时务必使用本技能；涉及字幕但缺少结构化数据时也要优先触发本技能做分流。只要结果用于字幕上屏，严禁使用 basic 转写，必须走 nlp。\"\n---\n\n# Add Subtitle Template Skill\n\n把“字幕数据分析 -> 模板匹配 -> 工作流执行”做成一条稳定链路，目标是批量添加模板字幕并返回可继续编辑的 `draft_id`。\n\n技能内置脚本（按 skill-creator 规范打包在 `scripts/`，必须优先用这些脚本）：\n- `<skill-path>/scripts/apply_subtitle_template.py`（统一入口：自动标准化 + 自动选模板）\n- `<skill-path>/scripts/template_word_pop.py`（词块弹入）\n- `<skill-path>/scripts/template_roll_focus.py`（滚动聚焦）\n- `<skill-path>/scripts/template_slide_in_out.py`（句级上滑入/上滑出）\n- `<skill-path>/scripts/template_karaoke_highlight.py`（逐词高亮 Karaoke）\n- `<skill-path>/scripts/template_dual_track_motion.py`（交替轨道 + 关键帧上移）\n- `<skill-path>/scripts/template_bilingual_keyword.py`（中英双语 + 关键词高亮）\n- `<skill-path>/scripts/template_preset_transition.py`（主字幕 + 预设转场）\n- 要求：先把用户输入字幕标准化为模板可接收结构，再调用模板函数产出 `draft_id + inputs + script`\n- 禁止直接重写模板逻辑；只允许做“输入映射/补齐”和“执行 workflow”\n\n## 字幕上屏硬约束\n\n- 只要进入“字幕模板/字幕上屏/草稿写回”链路，`effect_mode=basic` 一律拒绝执行\n- `basic` 仅允许用于素材分析与粗预览，不得作为上屏输入\n- 发现输入里标记为 `basic`（如 `meta.effect_mode=basic` 或 `meta.asr_effect_mode=basic`）时，必须报错并要求改为 `llm-asr --effect-mode nlp`\n\n字幕输入对齐规则（把用户字幕向 `scripts/` 模板输入靠拢）：\n- 所有模板函数签名都按 `func(segments, draft_id)` 调用，核心是先构造 `segments`\n- `segments` 标准项优先包含：`start`、`end`、`text`，单位统一毫秒\n- 若用户给的是秒：乘以 `1000` 转毫秒；若已是毫秒：保持不变\n- 若缺 `end`：用下一段 `start`，无下一段则用 `start + 1000~2000ms` 兜底\n- 若要走词块模板（`template_word_pop.py`）：尽量补 `phrase=[{text,start_time,end_time}]`，无词级时间则按句子时长均分\n- 若只具备句级字幕：优先走句级模板（`template_slide_in_out.py` / `template_roll_focus.py` / `template_dual_track_motion.py` / `template_preset_transition.py`）\n\n模板调用方式（固定）：\n- 优先调用统一入口：`python <skill-path>/scripts/apply_subtitle_template.py --input <subtitle_json> --draft-id <draft_id>`\n- 默认随机选模板；如需复现可追加 `--selection-mode stable`\n- 所有模板统一通过“命名入口函数”调用：`apply_template(segments, draft_id)`\n- 模板函数返回值直接作为 `execute_workflow` 的请求体（或其主体字段），不要手工重拼一套新脚本\n- 若用户显式指定模板文件名，优先按用户指定模板执行\n\n工作流接口文档：\n- https://docs.vectcut.com/363414609e0\n\n## 鉴权前置（必须）\n\n- 在调用 `llm-asr`、`execute_workflow` 或任何 VectCut 接口前，先检查环境变量 `VECTCUT_API_KEY`\n- 若未设置 `VECTCUT_API_KEY`，必须先调用 `vectcut-login` 技能完成登录和 token 校验，再继续本技能流程\n- 禁止在缺少 token 的情况下直接继续执行模板写入或工作流调用\n\n## 何时使用\n\n- 用户要“添加模板字幕”“套用字幕模板”“批量添加字幕”“词级字幕动画”\n- 用户给了字幕或音视频素材，希望自动完成模板字幕上屏\n- 用户给了 `draft_id`，希望在已有草稿继续加字幕\n\n## 输入识别（严格三分支）\n\n先判断用户输入是否包含以下数据：\n- 结构化字幕：`segments`（句级或词级时间戳，至少有 `start/end/text`）\n- 媒体信息：`audio_url` / `video_url`（可单独一种，也可都有）\n\n按以下顺序分流：\n\n1. **仅有字幕，无音视频（情况 1.1）**\n- 不执行模板写入\n- 明确提示用户补充可访问的 `audio_url` 或 `video_url`\n- 说明原因：缺少媒体来源会影响时间轴校验与可复现执行\n\n2. **仅有音视频，无结构化字幕（情况 1.2）**\n- 必须先调用 `llm-asr` 技能提取结构化字幕\n- 默认 `effect_mode` 固定 `nlp`\n- 必须先把原始素材写入草稿，再进入模板匹配：\n  - 有 `video_url`：调用 `add_video`（文档：https://docs.vectcut.com/321243745e0）\n  - 仅有 `audio_url`：调用 `add_audio`（文档：https://docs.vectcut.com/321196190e0）\n  - 默认参数约定：`start=0`、`end=0`（表示取到源素材结尾）、`target_start=0`\n  - `add_video` 关键字段：`video_url`, `start`, `end`, `target_start`, `track_name`, `draft_id`\n  - `add_audio` 关键字段：`audio_url`, `start`, `end`, `target_start`, `track_name`, `draft_id`\n  - `add_video` 请求示例：\n\n```bash\ncurl --location --request POST 'https://open.vectcut.com/cut_jianying/add_video' \\\n  --header 'Content-Type: application/json' \\\n  --header 'Authorization: Bearer <VECTCUT_API_KEY>' \\\n  --header 'Accept: */*' \\\n  --header 'Host: open.vectcut.com' \\\n  --header 'Connection: keep-alive' \\\n  --data-raw '{\n    \"video_url\": \"https://cdn.wanx.aliyuncs.com/wanx/1719234057367822001/text_to_video/092faf3c94244973ab752ee1280ba76f.mp4?spm=5176.29623064.0.0.41ed26d6cBOhV3&file=092faf3c94244973ab752ee1280ba76f.mp4\", // 视频链接\n    \"start\": 0, // 原视频的截取开始时间，默认0\n    \"end\": 0, // 原视频的截取结束时间，默认视频时长\n    \"target_start\": 0, // 视频插入轨道的开始时间，默认0\n    \"track_name\": \"video_main\",\n    \"draft_id\": \"<draft_id>\"\n  }'\n```\n\n  - `add_audio` 请求示例：\n\n```bash\ncurl --location --request POST 'https://open.vectcut.com/cut_jianying/add_audio' \\\n  --header 'Content-Type: application/json' \\\n  --header 'Authorization: Bearer <VECTCUT_API_KEY>' \\\n  --header 'Accept: */*' \\\n  --header 'Host: open.vectcut.com' \\\n  --header 'Connection: keep-alive' \\\n  --data-raw '{\n    \"audio_url\": \"https://lf3-lv-music-tos.faceu.com/obj/tos-cn-ve-2774/oYACBQRCMlWBIrZipvQZhI5LAlUFYii0RwEPh\",\n    \"start\": 0, // 原音频的截取开始时间，默认0\n    \"end\": 0, // 原音频的截取结束时间，默认音频时长\n    \"target_start\": 0,// 音频插入轨道的开始时间，默认0\n    \"track_name\": \"audio_main\",\n    \"draft_id\": \"<draft_id>\"\n  }'\n```\n  - 必须使用素材写回接口返回的 `draft_id` 作为后续编辑草稿 ID\n  - 后续 `llm-asr`、模板脚本与 `execute_workflow` 必须显式传入同一个 `draft_id`，禁止新建草稿分支\n- 拿到 `segments` 后，基于上述同一 `draft_id` 进入“模板匹配”步骤\n\n3. **音视频 + 结构化字幕都已具备（情况 1.3）**\n- 直接进入“模板匹配”步骤\n\n## 模板匹配（两种情况）\n\n### 情况 2.1：可直接套用\n\n当字幕结构满足模板最低要求时，直接套用。默认选型顺序：\n\n1. 有 `en` 字段或用户要求双语 -> `template_bilingual_keyword.py`\n2. 有完整 `words[].start_time/end_time` 且要逐词高亮 -> `template_karaoke_highlight.py`\n3. 用户要求预设样式/预设贴纸感 -> `template_preset_transition.py`\n4. 用户要求交替轨道、字幕位移动画 -> `template_dual_track_motion.py`\n5. 用户要求词块弹入 -> `template_word_pop.py`\n6. 用户要求滚动聚焦 -> `template_roll_focus.py`\n7. 仅句级普通上屏（无特殊效果）：\n   - 不要固定死一个模板；默认随机分流（可切换稳定模式用于复现）\n   - 可在 `template_slide_in_out.py` / `template_roll_focus.py` / `template_dual_track_motion.py` / `template_preset_transition.py` 间自动选择\n\n### 情况 2.2：需调整后套用\n\n若字幕结构不完整，先做最小补齐再套用模板：\n\n- 缺 `end`：用下一句 `start` 或当前 `start + 1~2s` 兜底\n- 缺词级时间戳：按句子时长均分到词/字\n- 毫秒与秒混用：统一转换为秒（float）\n- 空文本段：剔除\n- 时长异常（`end < start`）：修正为 `end = start`\n\n补齐完成后再次判断模板可用性，再进入套用。\n\n## 工作流构建规范\n\n目标是产出 `workflow_json`：\n- 顶层字段：`draft_id`（可选）、`inputs`、`script`\n- `script` 内步骤使用 `action/for/if/set_var`\n- 批量字幕写入优先用 `for + add_text (+ add_video_keyframe)`\n\n建议输出结构：\n\n```json\n{\n  \"draft_id\": \"可选，存在则复用\",\n  \"inputs\": {\n    \"subtitles\": []\n  },\n  \"script\": []\n}\n```\n\n说明：\n- 若用户已有 `draft_id`，必须放入请求体，基于原草稿继续编辑\n- 若没有 `draft_id`，不传该字段，由服务端新建草稿\n\n## 执行步骤（必须执行）\n\n1. 完成输入分流（1.1/1.2/1.3）\n2. 完成模板匹配（2.1/2.2）\n3. 生成 `workflow_json`（含 `inputs+script`，必要时含 `draft_id`）\n4. 调用 `POST /cut_jianying/execute_workflow`\n5. 返回结果中的：\n   - `success`\n   - `output.draft_id`\n   - `output.draft_url`\n   - `error`（若失败）\n\n## 口播自动包装\n\n当用户目标是“剪网感口播/开始剪口播/一键成片”，在字幕执行成功后必须追加以下步骤：\n\n1. `add-effect_audio`：开头 `target_start=0` 添加一次提示音\n2. `add-effect`：开头与重点句时间段各添加一次特效\n3. `add-bgm`：查询草稿时长后自动铺满背景音乐\n\n## 与用户交互规则\n\n- 情况 1.1 只做补全提示，不编造素材 URL\n- 情况 1.2 先告知“将先做 ASR 再套模板”，再执行\n- 模板不唯一时，给出简短推荐并默认选更稳的模板：\n  - 词级数据充分 -> 模板 A\n  - 仅句级数据 -> 模板 B\n\n## 输出要求\n\n- 成功：给出本次使用模板、关键处理（是否做补齐）、`draft_id`、`draft_url`\n- 失败：给出失败步骤（ASR / 模板构建 / execute_workflow）与原始错误信息\n- 不要输出与用户请求无关的长解释\n\nArchive v1.5.8: 65 files, 154236 bytes\n\nFiles: references/ai-image-model_capabilities.json (9334b), references/bgms.json (946b), references/cover_prompt_references.md (4610b), references/effect_audios.json (792b), references/model_capabilities.json (1893b), rules/add-bgm.md (3180b), rules/add-effect_audio.md (3093b), rules/add-effect.md (3440b), rules/add-subtitle-template.md (8162b), rules/add-title.md (2295b), rules/asr-vad.md (5309b), rules/cloud-render.md (2870b), rules/cut-koubo-template.md (3750b), rules/cut-koubo.md (15377b), rules/describe-video.md (3705b), rules/extract-audio.md (2079b), rules/generate-ai-image.md (3818b), rules/generate-ai-video.md (2338b), rules/generate-cover.md (7184b), rules/human-pip.md (3867b), rules/llm-asr.md (5594b), rules/modify-draft.md (1739b), rules/query-draft.md (5274b), rules/scrapt-video.md (2727b), rules/speech-synthesis.md (2389b), rules/split-video.md (3097b), rules/sts-upload.md (3067b), rules/text-background.md (3612b), rules/text-keywords.md (4513b), rules/vectcut-api-search.md (1931b), rules/vectcut-login.md (2173b), rules/video-voiceover-remix.md (3060b), rules/zoom-in-out.md (3335b), scripts/add_bgm.py (8853b), scripts/add_effect_audio.py (7091b), scripts/add_effect.py (9762b), scripts/add_title.py (4255b), scripts/apply_subtitle_template.py (9451b), scripts/asr_vad.py (8470b), scripts/cloud_render.py (3719b), scripts/describe_video.py (42233b), scripts/extract_audio_async.py (4763b), scripts/generate_ai_image_async.py (9741b), scripts/generate_ai_video_async.py (8564b), scripts/human_pip_async.py (6246b), scripts/llm_asr_async.py (10652b), scripts/modify_draft.py (1879b), scripts/query_draft.py (1910b), scripts/remix_and_add_videos.py (7990b), scripts/scrapt_video.py (8592b), scripts/search_vectcut_api.py (5827b), scripts/split_video_async.py (6874b), scripts/sts_upload.py (3716b), scripts/template_bilingual_keyword.py (36345b), scripts/template_dual_track_motion.py (16076b), scripts/template_karaoke_highlight.py (16617b), scripts/template_preset_transition.py (16122b), scripts/template_roll_focus.py (18402b), scripts/template_slide_in_out.py (4226b), scripts/template_word_pop.py (20763b), scripts/text_background_async.py (6422b), scripts/vectcut_login.py (2758b), scripts/zoom_in_out.py (16362b), SKILL.md (5194b), _meta.json (126b)\n\nFile v1.5.8:SKILL.md\n\n---\nname: vectcut-skill\ndescription: \"VectCut 全能剪辑聚合技能。用于剪口播、混剪、电商广告等场景，统一编排流光剪辑能力（字幕、音频、特效、画中画、抠像、AI补镜、AI配音、平台视频抓取、渲染导出）。当用户提出“做成片/自动剪辑/口播包装/广告剪辑/抓平台视频后再剪”等需求时，必须优先使用本技能。\"\nhomepage: \"https://www.vectcut.com/\"\nmetadata:\n  openclaw:\n    emoji: \"🎬\"\n    requires:\n      env: [\"VECTCUT_API_KEY\"]\n    primaryEnv: \"VECTCUT_API_KEY\"\ndependency:\n---\n\n## 触发场景\n\n- 口播自动成片、网感剪辑、去气口重排、口播包装\n- 混剪视频（多素材重组、节奏强化、字幕动画、转场特效）\n- 电商广告（卖点强化、人物抠像、画中画、关键词强调、提示音）\n- 需要“抓取抖音/快手/小红书/B站/TikTok/YouTube 链接后分析并剪辑”\n- 想要查看VectCut 流光剪辑的API都支持哪些功能，具体API怎么使用。\n- 需要“AI 补镜 / AI 生成图片或视频 / AI 配音 / 云渲染导出”\n\n## 统一前置规则（沿用）\n\n1. 任何 VectCut 调用前，先检查 `VECTCUT_API_KEY`\n2. 缺失、为空或鉴权失败时，先调用 `vectcut-login`\n3. 输入是本地素材路径时，先调用 `sts-upload` 转公网 URL 再继续\n4. 关键节点后调用 `query-draft` 做草稿校验\n5. 接口参数不确定或报错时，用 `vectcut-api-search` 查询最新文档再修正\n\n## 场景路由策略（聚合编排）\n\n1. **平台链接输入**\n- 先走 `scrapt-video` 抓取视频信息与直链\n- 自动衔接 `describe-video` 做字幕+画面分析\n- 再按用户目标进入口播链、混剪链或广告链\n\n2. **口播成片（模板稳定链）**\n- 用户明确提到“模板口播/固定风格/稳定复现/降低不确定性”时，优先走 `cut-koubo-template`\n- 输入按模板接口严格校验（不同模板的必填参数不同，如 `title` 或 `kongjing_urls`）\n- 通过官方 `submit_agent_task` 固定链路出草稿，随后调用 `generate-cover`，并询问用户是否执行 `prepend_image` 插入首帧\n\n3. **口播成片（默认主链）**\n- 未指定模板稳定链时，优先走 `cut-koubo` 完成一体化编排\n- 最后可选 `cloud-render`\n\n4. **混剪链路**\n- `describe-video` 做素材盘点\n- `split-video` 切片重组\n- `add-subtitle-template` 字幕上屏（如果有字幕）\n- `add-effect` / `zoom-in-out` 强化节奏\n- `add-bgm` + `add-effect_audio` 收口\n- `cloud-render` 导出\n\n4.1 **混剪配音成片（video-voiceover-remix 子链路）**\n- 先按 `rules/video-voiceover-remix.md` 执行固定七步：`describe-video` -> `add_video(volume=-100)` -> 文案生成 -> `speech-synthesis + add_audio(volume=20)` -> `llm-asr(nlp) + add-subtitle-template` -> `add-bgm` -> `add-effect_audio`\n- 第 2 步重排优先调用内置脚本：`scripts/remix_and_add_videos.py`\n- 第 3 步文案字数按每秒 1.5 字估算\n- 第 4 步默认音色：`voice_id=gv_8195cd8b03f74658a9d92c9b2a9e9cba`，并提示用户可到 VectCut 官网查看可用音色\n\n5. **电商广告链路**\n- 人物突出优先：`human-pip` 或 `text-background`\n- 卖点强调：`text-keywords` + `add-title`\n- 素材不足：`generate-ai-image` / `generate-ai-video`\n- 配音需求：`speech-synthesis`\n- 包装完成后最终 `cloud-render`\n\n## 字幕与音频规则\n\n- 若需口播精剪，优先 `llm-asr`(nlp档位) + `asr-vad`，确保字幕时间轴与剪辑后内容一致\n- 需要字幕上屏时，优先 `add-subtitle-template` 统一模板化输出\n- BGM 全片铺设用 `add-bgm`，关键点提示音用 `add-effect_audio`\n\n## 输出要求\n\n- 至少返回：`draft_id`、`draft_url`\n- 同步返回：执行的技能链路摘要（调用顺序与关键结果）\n- 若失败：返回失败步骤、原始错误、建议修复动作（优先 `query-draft` + `vectcut-api-search`）\n- 用户要求导出成片时：调用 `cloud-render` 并返回可播放/下载地址\n\n## 目录索引\n\n- [add-bgm](rules/add-bgm.md)\n- [add-effect](rules/add-effect.md)\n- [add-effect_audio](rules/add-effect_audio.md)\n- [add-subtitle-template](rules/add-subtitle-template.md)\n- [add-title](rules/add-title.md)\n- [asr-vad](rules/asr-vad.md)\n- [cloud-render](rules/cloud-render.md)\n- [cut-koubo](rules/cut-koubo.md)\n- [cut-koubo-template](rules/cut-koubo-template.md)\n- [describe-video](rules/describe-video.md)\n- [extract-audio](rules/extract-audio.md)\n- [generate-ai-image](rules/generate-ai-image.md)\n- [generate-ai-video](rules/generate-ai-video.md)\n- [generate-cover](rules/generate-cover.md)\n- [human-pip](rules/human-pip.md)\n- [llm-asr](rules/llm-asr.md)\n- [modify-draft](rules/modify-draft.md)\n- [query-draft](rules/query-draft.md)\n- [scrapt-video](rules/scrapt-video.md)\n- [speech-synthesis](rules/speech-synthesis.md)\n- [split-video](rules/split-video.md)\n- [sts-upload](rules/sts-upload.md)\n- [text-background](rules/text-background.md)\n- [text-keywords](rules/text-keywords.md)\n- [video-voiceover-remix](rules/video-voiceover-remix.md)\n- [vectcut-api-search](rules/vectcut-api-search.md)\n- [vectcut-login](rules/vectcut-login.md)\n- [zoom-in-out](rules/zoom-in-out.md)\n\nFile v1.5.8:_meta.json\n\n{\n  \"ownerId\": \"kn7cjw4v6q9zst2vc2w79er98h82a3wt\",\n  \"slug\": \"vectcut\",\n  \"version\": \"1.5.8\",\n  \"publishedAt\": 1777254847118\n}\n\nFile v1.5.8:references/ai-image-model_capabilities.json\n\n{\n  \"version\": \"2026-04-17\",\n  \"source_docs\": [\n    \"https://docs.vectcut.com/443760774e0\"\n  ],\n  \"reference_image_limit_exclusive\": 14,\n  \"models\": {\n    \"nano_banana_2\": {\n      \"aliases\": [\n        \"nano_banana_2\",\n        \"gemini-3.1-flash-image\",\n        \"gemini-3.1-flash-image-preview\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"848x1264\",\n        \"1264x848\",\n        \"896x1200\",\n        \"1200x896\",\n        \"928x1152\",\n        \"1152x928\",\n        \"768x1376\",\n        \"1376x768\",\n        \"1584x672\",\n        \"2048x2048\",\n        \"1696x2528\",\n        \"2528x1696\",\n        \"1792x2400\",\n        \"2400x1792\",\n        \"1856x2304\",\n        \"2304x1856\",\n        \"1536x2752\",\n        \"2752x1536\",\n        \"3168x1344\",\n        \"4096x4096\",\n        \"3392x5056\",\n        \"5056x3392\",\n        \"3584x4800\",\n        \"4800x3584\",\n        \"3712x4608\",\n        \"4608x3712\",\n        \"3072x5504\",\n        \"5504x3072\",\n        \"6336x2688\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"},\n          {\"size\": \"848x1264\", \"ratio\": \"2:3\"},\n          {\"size\": \"1264x848\", \"ratio\": \"3:2\"},\n          {\"size\": \"896x1200\", \"ratio\": \"3:4\"},\n          {\"size\": \"1200x896\", \"ratio\": \"4:3\"},\n          {\"size\": \"928x1152\", \"ratio\": \"4:5\"},\n          {\"size\": \"1152x928\", \"ratio\": \"5:4\"},\n          {\"size\": \"768x1376\", \"ratio\": \"9:16\"},\n          {\"size\": \"1376x768\", \"ratio\": \"16:9\"},\n          {\"size\": \"1584x672\", \"ratio\": \"21:9\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"1696x2528\", \"ratio\": \"2:3\"},\n          {\"size\": \"2528x1696\", \"ratio\": \"3:2\"},\n          {\"size\": \"1792x2400\", \"ratio\": \"3:4\"},\n          {\"size\": \"2400x1792\", \"ratio\": \"4:3\"},\n          {\"size\": \"1856x2304\", \"ratio\": \"4:5\"},\n          {\"size\": \"2304x1856\", \"ratio\": \"5:4\"},\n          {\"size\": \"1536x2752\", \"ratio\": \"9:16\"},\n          {\"size\": \"2752x1536\", \"ratio\": \"16:9\"},\n          {\"size\": \"3168x1344\", \"ratio\": \"21:9\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"3392x5056\", \"ratio\": \"2:3\"},\n          {\"size\": \"5056x3392\", \"ratio\": \"3:2\"},\n          {\"size\": \"3584x4800\", \"ratio\": \"3:4\"},\n          {\"size\": \"4800x3584\", \"ratio\": \"4:3\"},\n          {\"size\": \"3712x4608\", \"ratio\": \"4:5\"},\n          {\"size\": \"4608x3712\", \"ratio\": \"5:4\"},\n          {\"size\": \"3072x5504\", \"ratio\": \"9:16\"},\n          {\"size\": \"5504x3072\", \"ratio\": \"16:9\"},\n          {\"size\": \"6336x2688\", \"ratio\": \"21:9\"}\n        ]\n      }\n    },\n    \"nano_banana_pro\": {\n      \"aliases\": [\n        \"nano_banana_pro\",\n        \"gemini-3-pro-image-preview\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"848x1264\",\n        \"1264x848\",\n        \"896x1200\",\n        \"1200x896\",\n        \"928x1152\",\n        \"1152x928\",\n        \"768x1376\",\n        \"1376x768\",\n        \"1584x672\",\n        \"2048x2048\",\n        \"1696x2528\",\n        \"2528x1696\",\n        \"1792x2400\",\n        \"2400x1792\",\n        \"1856x2304\",\n        \"2304x1856\",\n        \"1536x2752\",\n        \"2752x1536\",\n        \"3168x1344\",\n        \"4096x4096\",\n        \"3392x5056\",\n        \"5056x3392\",\n        \"3584x4800\",\n        \"4800x3584\",\n        \"3712x4608\",\n        \"4608x3712\",\n        \"3072x5504\",\n        \"5504x3072\",\n        \"6336x2688\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"},\n          {\"size\": \"848x1264\", \"ratio\": \"2:3\"},\n          {\"size\": \"1264x848\", \"ratio\": \"3:2\"},\n          {\"size\": \"896x1200\", \"ratio\": \"3:4\"},\n          {\"size\": \"1200x896\", \"ratio\": \"4:3\"},\n          {\"size\": \"928x1152\", \"ratio\": \"4:5\"},\n          {\"size\": \"1152x928\", \"ratio\": \"5:4\"},\n          {\"size\": \"768x1376\", \"ratio\": \"9:16\"},\n          {\"size\": \"1376x768\", \"ratio\": \"16:9\"},\n          {\"size\": \"1584x672\", \"ratio\": \"21:9\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"1696x2528\", \"ratio\": \"2:3\"},\n          {\"size\": \"2528x1696\", \"ratio\": \"3:2\"},\n          {\"size\": \"1792x2400\", \"ratio\": \"3:4\"},\n          {\"size\": \"2400x1792\", \"ratio\": \"4:3\"},\n          {\"size\": \"1856x2304\", \"ratio\": \"4:5\"},\n          {\"size\": \"2304x1856\", \"ratio\": \"5:4\"},\n          {\"size\": \"1536x2752\", \"ratio\": \"9:16\"},\n          {\"size\": \"2752x1536\", \"ratio\": \"16:9\"},\n          {\"size\": \"3168x1344\", \"ratio\": \"21:9\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"3392x5056\", \"ratio\": \"2:3\"},\n          {\"size\": \"5056x3392\", \"ratio\": \"3:2\"},\n          {\"size\": \"3584x4800\", \"ratio\": \"3:4\"},\n          {\"size\": \"4800x3584\", \"ratio\": \"4:3\"},\n          {\"size\": \"3712x4608\", \"ratio\": \"4:5\"},\n          {\"size\": \"4608x3712\", \"ratio\": \"5:4\"},\n          {\"size\": \"3072x5504\", \"ratio\": \"9:16\"},\n          {\"size\": \"5504x3072\", \"ratio\": \"16:9\"},\n          {\"size\": \"6336x2688\", \"ratio\": \"21:9\"}\n        ]\n      }\n    },\n    \"seedream-3.0\": {\n      \"aliases\": [\n        \"seedream-3.0\"\n      ],\n      \"supports_reference_images\": false,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"864x1152\",\n        \"1152x864\",\n        \"1280x720\",\n        \"720x1280\",\n        \"832x1248\",\n        \"1248x832\",\n        \"1512x648\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"},\n          {\"size\": \"864x1152\", \"ratio\": \"4:3\"},\n          {\"size\": \"1152x864\", \"ratio\": \"3:4\"},\n          {\"size\": \"1280x720\", \"ratio\": \"16:9\"},\n          {\"size\": \"720x1280\", \"ratio\": \"9:16\"},\n          {\"size\": \"832x1248\", \"ratio\": \"3:2\"},\n          {\"size\": \"1248x832\", \"ratio\": \"2:3\"},\n          {\"size\": \"1512x648\", \"ratio\": \"21:9\"}\n        ]\n      }\n    },\n    \"seedream-4.0\": {\n      \"aliases\": [\n        \"seedream-4.0\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"2048x2048\",\n        \"2304x1728\",\n        \"2496x1664\",\n        \"2560x1440\",\n        \"3024x1296\",\n        \"1440x2560\",\n        \"4096x4096\",\n        \"4694x3520\",\n        \"4992x3328\",\n        \"5404x3040\",\n        \"6198x2656\",\n        \"3040x5404\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2304x1728\", \"ratio\": \"4:3\"},\n          {\"size\": \"2496x1664\", \"ratio\": \"3:2\"},\n          {\"size\": \"2560x1440\", \"ratio\": \"16:9\"},\n          {\"size\": \"3024x1296\", \"ratio\": \"21:9\"},\n          {\"size\": \"1440x2560\", \"ratio\": \"9:16\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"4694x3520\", \"ratio\": \"4:3\"},\n          {\"size\": \"4992x3328\", \"ratio\": \"3:2\"},\n          {\"size\": \"5404x3040\", \"ratio\": \"16:9\"},\n          {\"size\": \"6198x2656\", \"ratio\": \"21:9\"},\n          {\"size\": \"3040x5404\", \"ratio\": \"9:16\"}\n        ]\n      }\n    },\n    \"seedream-4.5\": {\n      \"aliases\": [\n        \"seedream-4.5\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"2048x2048\",\n        \"2304x1728\",\n        \"2496x1664\",\n        \"2560x1440\",\n        \"3024x1296\",\n        \"1440x2560\",\n        \"4096x4096\",\n        \"4694x3520\",\n        \"4992x3328\",\n        \"5404x3040\",\n        \"6198x2656\",\n        \"3040x5404\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2304x1728\", \"ratio\": \"4:3\"},\n          {\"size\": \"2496x1664\", \"ratio\": \"3:2\"},\n          {\"size\": \"2560x1440\", \"ratio\": \"16:9\"},\n          {\"size\": \"3024x1296\", \"ratio\": \"21:9\"},\n          {\"size\": \"1440x2560\", \"ratio\": \"9:16\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"4694x3520\", \"ratio\": \"4:3\"},\n          {\"size\": \"4992x3328\", \"ratio\": \"3:2\"},\n          {\"size\": \"5404x3040\", \"ratio\": \"16:9\"},\n          {\"size\": \"6198x2656\", \"ratio\": \"21:9\"},\n          {\"size\": \"3040x5404\", \"ratio\": \"9:16\"}\n        ]\n      }\n    },\n    \"seedream-5.0\": {\n      \"aliases\": [\n        \"seedream-5.0\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"2048x2048\",\n        \"2304x1728\",\n        \"2496x1664\",\n        \"2560x1440\",\n        \"3024x1296\",\n        \"1440x2560\",\n        \"3072x3072\",\n        \"3456x2592\",\n        \"2592x3456\",\n        \"4096x2304\",\n        \"2304x4096\",\n        \"2496x3744\",\n        \"3744x2496\",\n        \"4704x2016\"\n      ],\n      \"size_profiles\": {\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"2304x1728\", \"ratio\": \"4:3\"},\n          {\"size\": \"2496x1664\", \"ratio\": \"3:2\"},\n          {\"size\": \"2560x1440\", \"ratio\": \"16:9\"},\n          {\"size\": \"3024x1296\", \"ratio\": \"21:9\"},\n          {\"size\": \"1440x2560\", \"ratio\": \"9:16\"}\n        ],\n        \"3K\": [\n          {\"size\": \"3072x3072\", \"ratio\": \"1:1\"},\n          {\"size\": \"3456x2592\", \"ratio\": \"4:3\"},\n          {\"size\": \"2592x3456\", \"ratio\": \"3:4\"},\n          {\"size\": \"4096x2304\", \"ratio\": \"16:9\"},\n          {\"size\": \"2304x4096\", \"ratio\": \"9:16\"},\n          {\"size\": \"2496x3744\", \"ratio\": \"2:3\"},\n          {\"size\": \"3744x2496\", \"ratio\": \"3:2\"},\n          {\"size\": \"4704x2016\", \"ratio\": \"21:9\"}\n        ]\n      }\n    }\n  }\n}\n\nFile v1.5.8:references/bgms.json\n\n{\n  \"bgms\": [\n    \"https://player.install-ai-guider.top/koubo/bgm/void.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/time_to_pretend.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/the_right_path.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/spoons_for_loons.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/night_cruising.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Monsieur_melody.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/melody_mix.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/IV_feat.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Golden_hour.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Fight.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/%E5%BF%99%E7%A2%8C%E7%9A%84%E7%94%9F%E6%B4%BB%E4%BA%BA%E5%B1%B1%E4%BA%BA%E6%B5%B7.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/%E8%9D%B4%E8%9D%B6%E6%AD%A5.MP3\"\n  ]\n}\n\nFile v1.5.8:references/cover_prompt_references.md\n\n# Generate Cover Prompt References\n\n用于 `submit_task/generate` 前的提示词润色参考。请先理解草稿主题，再从下列风格中抽取表达，不要生硬照抄整段。\n\n## 使用规则\n\n- 目标：把 `query_script` 提取的主题、卖点、受众转成“可执行画面语言”。\n- 结构建议：`画面类型 + 主体 + 场景元素 + 构图/镜头 + 质感/色彩 + 文字排版要求(可选)`。\n- 优先“语义清洗”：将草稿里的原始字段、文件名、JSON 结构转为自然语言短语。\n- 可复用关键词：精准构图、视觉冲击力、高对比度、高饱和度、留白、层次、系列化风格。\n- 默认输出“海报封面”而非“纯场景图”：除非用户明确要求无字，必须写入标题文案与排版信息。\n- 文案字段建议：`主标题(headline)`、`副标题(subheadline)`、`角标/标签(badge)`、`位置(左上/中上/右下)`、`字体风格(粗体/手写/无衬线)`。\n- 母版选择建议：每次随机抽取 1 条参考提示词作为母版，不固定单一参考。\n- 人物口播约束：人物主体保持写实高保真（脸部特征/肤质/服饰不做卡通化）；风格化优先作用于背景、图形元素和文字排版。\n\n## 内置参考提示词（用户提供）\n\n### 参考 1：美式漫画综艺混剪\n\n创作一张美式漫画风的综艺混剪自媒体封面：背景为蓝色波点渐变底，搭配黄色闪电、星光、卡通点赞手等装饰元素；排版采用“顶部大标题 + 话题标签 + 人物周边气泡文案”的分层结构，顶部绿色对话框内用白色粗体字呈现“超闪亮时刻”，下方蓝色对话框内排版“# 高小定综艺混剪”；将参考图里的人物形象抠出，并且人物居中，周围环绕两个漫画风格气泡框，分别标注“接梗补刀”“高能救场”（字体为蓝色粗体，搭配白色外框）；整体色调以蓝、黄、绿为主，明亮活泼，风格融合美式漫画的夸张动感与综艺内容的吸睛属性，传递出热闹有趣的视觉效果。\n\n### 参考 2：杂志海报\n\n杂志风格,画面主体是冷艳时尚的人物，人物形象来源于参考图里的人物形象抠出，姿态张力十足。左上角以大号白色衬线字体呈现刊名《VOGUE》，字母锐利有质感；左侧中下部用黑色细体字竖排标注 “FEBRUARY 2025 | URBAN EDGE”，点明月份与主题；右下角则以金色小号字体印出 “COVER STAR: ELLA CHEN”，强化人物身份。背景为极简浅灰，黑色胶带元素穿插其中。光线是硬调侧光，塑造强烈阴影与时尚氛围。色彩黑、绿、白对比高级，构图中心对称。使用哈苏 H6D-100c，HC 80mm f/2.8，快门 1/250s，光圈 f/3.5，ISO 100。后期文字排版与画面风格统一，字体质感匹配整体冷冽高级感，让封面既具视觉冲击又信息清晰。\n\n### 参考 3：复古风海报\n\n复古风海报，采用拼贴艺术风格，主色调深咖加米黄色，背景融合做旧报纸、方格笔记本、复古磁带、老式电视机、复古包包，等怀旧元素，搭配回形针等文具装饰，元素大小对比；主体是参考图里的人物半身，整体风格兼具复古感与潮流感，色彩复古柔和，画面上方放主标题潮流粗体艺术文字突出 “周一复古穿搭”小号字色块垫底“甜酷 | 校园 | 潮流”，下描放小文案“更适合你的复古校园穿搭” ，搭配描边线，手绘小元素等营造出充满年代感又时尚的视觉效果。\n\n### 参考 4：杂志封面\n《时代周刊》封面，主角为一位杰出的人物封面，人物形象是从参考图里扣出来的。儒商风范：优雅、睿智且老练。留着修剪整齐的黑色短发，身着剪裁考究的深色西装。神情沉稳自信，带着一丝会意的微笑。灯光为戏剧性的高对比度影棚灯光，具有典型的杂志封面肖像风格。背景带有《时代周刊》标志性的红色边框。文字元素包括左上角的‘TIME’字样，“The New Visionary”的粗体经典衬线字体标题。照片级真实感，超高清细节，8k分辨率，电影级画质，眼睛部分对焦清晰。”\n\n## 润色产出模板（推荐）\n\n可在第 3 步前先整理成一段最终 prompt：\n\n`封面设计，{风格定位}。主体：{核心人物/核心物体}。场景：{关键场景元素}。构图与镜头：{景别/视角/运动感}。色彩与质感：{主色调/材质}。版式：{是否需要标题、副标题、角标及其位置}。整体目标：{吸睛点/转化目标}。`\n\nFile v1.5.8:references/effect_audios.json\n\n{\n  \"effect_audios\": [\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E6%89%93%E5%93%8D%E6%8C%87%E5%A3%B0.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%98%9F%E5%92%9A%E6%8F%90%E7%A4%BA%E9%9F%B3.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%9B%9E%E5%BF%86%E5%88%B7%E4%B8%80%E4%B8%8B.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%96%B7%E9%9B%BE%E5%89%82%E5%96%B7%E4%B8%80%E4%B8%8B.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%8D%81%E9%9D%A2%E5%9F%8B%E4%BC%8F%E5%97%AF.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E6%89%8B%E6%9C%BA%E9%94%AE%E7%9B%98%E6%89%93%E5%AD%972.MP3\",\n    \"https://player.install-ai-guider.top/koubo/yingxiao/%E5%BE%AE%E6%B3%A2%E7%82%89%E5%8F%AE.MP3\"\n  ]\n}\n\nFile v1.5.8:references/model_capabilities.json\n\n{\n  \"models\": {\n    \"veo3.1\": {\n      \"aliases\": [\"veo3.1\"],\n      \"allowed_resolutions\": [\"1920x1080\", \"1080x1920\", \"1280x720\", \"720x1280\"],\n      \"supports_images\": true,\n      \"max_images\": 3,\n      \"supports_gen_duration\": false,\n      \"allowed_gen_duration\": [],\n      \"supports_generate_audio\": false\n    },\n    \"veo3.1-pro\": {\n      \"aliases\": [\"veo3.1-pro\"],\n      \"allowed_resolutions\": [\"1920x1080\", \"1080x1920\", \"1280x720\", \"720x1280\"],\n      \"supports_images\": true,\n      \"max_images\": 3,\n      \"supports_gen_duration\": false,\n      \"allowed_gen_duration\": [],\n      \"supports_generate_audio\": false\n    },\n    \"seedance-1.5-pro\": {\n      \"aliases\": [\"seedance-1.5-pro\"],\n      \"allowed_resolutions\": [\n        \"1920x1080\",\n        \"1664x1248\",\n        \"1440x1440\",\n        \"1248x1664\",\n        \"1080x1920\",\n        \"2206x946\",\n        \"1280x720\",\n        \"1112x834\",\n        \"960x960\",\n        \"834x1112\",\n        \"720x1280\",\n        \"1470x630\",\n        \"864x496\",\n        \"752x560\",\n        \"640x640\",\n        \"560x752\",\n        \"496x864\",\n        \"992x432\"\n      ],\n      \"supports_images\": true,\n      \"max_images\": 10,\n      \"supports_gen_duration\": true,\n      \"allowed_gen_duration\": [4, 5, 6, 7, 8, 9, 10, 11, 12],\n      \"supports_generate_audio\": true\n    },\n    \"grok-video-3\": {\n      \"aliases\": [\"grok-video-3\"],\n      \"allowed_resolutions\": [\"1376x928\", \"928x1376\", \"560x560\"],\n      \"supports_images\": true,\n      \"max_images\": 1,\n      \"supports_gen_duration\": true,\n      \"allowed_gen_duration\": [6, 10, 15],\n      \"supports_generate_audio\": false\n    },\n    \"sora2\": {\n      \"aliases\": [\"sora2\"],\n      \"allowed_resolutions\": [\"1920x1080\", \"1080x1920\", \"1280x720\", \"720x1280\"],\n      \"supports_images\": true,\n      \"max_images\": 2,\n      \"supports_gen_duration\": true,\n      \"allowed_gen_duration\": [5, 10, 15],\n      \"supports_generate_audio\": false\n    }\n  }\n}\n\nFile v1.5.8:rules/add-bgm.md\n\n---\nname: add-bgm\ndescription: \"为口播草稿自动添加背景音乐：先用 query-draft 获取草稿总时长，再用 get_duration 获取 BGM 时长，最后循环调用 add_audio 铺满全片。用户提到“加BGM/背景音乐/口播收尾配乐/自动铺满音频”时必须使用本技能。\"\n---\n\n# Add BGM Skill\n\n用于给口播类草稿在最后一步自动补背景音乐。核心是“查总时长 -> 查音频时长 -> 循环铺轨道”，避免手工反复添加。\n\n官方接口文档：\n- query_script: https://docs.vectcut.com/386764616e0\n- get_duration: https://docs.vectcut.com/328289318e0\n- add_audio: https://docs.vectcut.com/321196190e0\n\n## 何时使用\n\n- 用户要求“加背景音乐 / 加 BGM”\n- 用户希望把一段 BGM 自动铺满整条口播\n- 用户要在已有 `draft_id` 基础上追加音频轨道\n\n## 鉴权前置（必须）\n\n- 检查 `VECTCUT_API_KEY` 是否存在且有效\n- 缺失、为空或疑似失效时，先调用 `vectcut-login`\n\n## BGM 来源\n\n- 默认从技能内置白名单读取：`<skill-path>/references/bgms.json`\n- 若用户指定 `bgm_url`，优先使用该链接\n- 若未指定：\n  - 默认使用白名单第一条\n  - 也可通过 `bgm_index` 选择\n  - `random_bgm=true` 时随机选择\n\n## 执行流程（固定）\n\n1. 调用 `query_script` 获取草稿信息，读取 `draft.duration`（微秒）\n2. 将草稿时长转换为秒：`draft_duration_seconds = draft.duration / 1_000_000`\n3. 调用 `get_duration` 查询选中 BGM 的时长（秒）\n4. 按时间线循环调用 `add_audio`：\n   - 每段 `start=0`\n   - 每段 `target_start=当前累计位置`\n   - 每段 `end=min(bgm_duration, 剩余时长)`\n   - 直到覆盖完整草稿时长\n5. 返回最终 `draft_id`、`draft_url` 与每段素材写入结果\n\n## 执行方式\n\n准备请求 JSON，例如：\n\n```json\n{\n  \"draft_id\": \"dfd_xxx\",\n  \"bgm_index\": 0,\n  \"track_name\": \"audio_bgm\"\n}\n```\n\n执行脚本：\n\n```bash\npython <skill-path>/scripts/add_bgm.py \\\n  \"/tmp/add_bgm_payload.json\" \\\n  --output \"./add_bgm_result.json\"\n```\n\n## 输入说明\n\n- 必填：\n  - `draft_id`\n- 常用可选：\n  - `bgm_url`：直接指定背景音乐链接\n  - `bgm_index`：从白名单按索引选\n  - `random_bgm`：是否随机选白名单\n  - `track_name`：默认 `audio_bgm`\n  - `volume`：单位 dB，可选；不传时不主动设置，使用平台默认音量\n  - `speed`：默认 `1.0`\n  - `fade_in_duration` / `fade_out_duratioin`\n  - `bgm_list_path`：自定义白名单文件路径（推荐 JSON 格式：`{\"bgms\":[...]}`）\n\n## 输出结果\n\n默认输出 `add_bgm_result.json`，核心字段：\n- `meta.draft_duration_seconds`\n- `meta.bgm_duration_seconds`\n- `meta.segment_count`\n- `meta.selected_bgm_url`\n- `result.draft_id`\n- `result.draft_url`\n- `result.added_segments[]`\n\n## 失败处理建议\n\n- `VECTCUT_API_KEY` 缺失：先调用 `vectcut-login`\n- `draft_id` 无效：先用 `query-draft` 验证草稿可访问\n- 白名单无可用 URL：检查 `references/bgms.json` 或自定义 `bgm_list_path` 格式\n- `get_duration` 返回异常：检查 BGM 链接是否公网可访问\n- `add_audio` 失败：检查 `track_name/volume/speed` 参数合法性\n\nFile v1.5.8:rules/add-effect_audio.md\n\n---\nname: add-effect_audio\ndescription: \"在关键时间点为口播草稿添加短音效提示（一次即可，不铺满全片），用于开头抓注意力、重点关键词强化、画中画切入提示。用户提到“加提示音/重点音效/开头叮一下/关键词音效/画中画提示音”时必须使用本技能。\"\n---\n\n# Add Effect Audio Skill\n\n用于在关键位置添加“短提示音效”，强调当前讲述内容或画面重点。和背景音乐不同，本技能是单次点缀，不做全片铺满。\n\n官方接口文档：\n- get_duration: https://docs.vectcut.com/328289318e0\n- add_audio: https://docs.vectcut.com/321196190e0\n\n## 何时使用\n\n- 用户要求加“提示音/重点音效/叮一下”\n- 开头需要一个抓注意力的提示音\n- 中间出现重点关键词，需要声音强调\n- 画中画切入、重点镜头出现时，需要短音效提示\n\n## 鉴权前置（必须）\n\n- 检查 `VECTCUT_API_KEY` 是否可用\n- 缺失、为空或疑似失效时，先调用 `vectcut-login`\n\n## 音效来源\n\n- 默认读取技能内置白名单：`<skill-path>/references/effect_audios.json`\n- 若用户提供 `effect_audio_url`，优先使用用户链接\n- 若未指定：\n  - 默认取白名单第一条\n  - 可用 `effect_audio_index` 按序号选\n  - `random_effect_audio=true` 时随机选\n\n## 执行策略（与 BGM 区分）\n\n- 本技能默认“添加一次”即可，不循环铺满\n- 默认开头触发：`target_start=0`\n- 重点位由用户指定时间点：`target_start=<秒>`\n- 音效时长通过 `get_duration` 获取，默认整段添加；需要更短可传 `clip_duration`\n\n## 执行方式\n\n准备请求 JSON，例如：\n\n```json\n{\n  \"draft_id\": \"dfd_xxx\",\n  \"target_start\": 0.0,\n  \"effect_audio_index\": 0,\n  \"track_name\": \"audio_effect\",\n  \"volume\": 0.0\n}\n```\n\n执行脚本：\n\n```bash\npython <skill-path>/scripts/add_effect_audio.py \\\n  \"/tmp/add_effect_audio_payload.json\" \\\n  --output \"./add_effect_audio_result.json\"\n```\n\n## 输入说明\n\n- 必填：\n  - `draft_id`\n- 常用可选：\n  - `target_start`：音效放置时间点（秒），默认 `0.0`\n  - `effect_audio_url`：直接指定音效链接\n  - `effect_audio_index`：白名单索引\n  - `random_effect_audio`：是否随机选音效\n  - `clip_duration`：截取时长（秒），默认音效全长\n  - `track_name`：默认 `audio_effect`\n  - `volume`：单位 dB，默认 `0.0`\n  - `speed`：默认 `1.0`\n  - `effect_audio_list_path`：自定义音效白名单路径\n\n## 输出结果\n\n默认输出 `add_effect_audio_result.json`，核心字段：\n- `meta.selected_effect_audio_url`\n- `meta.source_duration_seconds`\n- `meta.clip_duration_seconds`\n- `meta.target_start_seconds`\n- `result.draft_id`\n- `result.draft_url`\n- `result.material_id`\n\n## 失败处理建议\n\n- `VECTCUT_API_KEY` 缺失：先调用 `vectcut-login`\n- `draft_id` 无效：先确认草稿可访问\n- 音效白名单为空：检查 `references/effect_audios.json` 或自定义列表\n- `get_duration` 失败：检查音效链接可访问性\n- `add_audio` 失败：检查 `target_start/volume/speed` 参数\n\nFile v1.5.8:rules/add-effect.md\n\n---\nname: add-effect\ndescription: \"为视频片段添加场景特效或人物特效，提升重点表达与画面丰富度。用户提到“加特效”“开头抓眼球”“强调某个画面细节”“口播悬疑氛围”“人物惊讶效果”时必须使用本技能。\"\n---\n\n# Add Effect Skill\n\n用于调用 VectCut `add_effect` 接口给视频草稿添加特效，适合以下场景：\n- 开头 1~3 秒抓眼球\n- 口播重点句强化\n- 悬疑/疑问语气氛围塑造\n- 电商带货细节放大、惊讶反应\n\n官方接口文档：\n- https://docs.vectcut.com/321244826e0\n- https://docs.vectcut.com/321245379e0\n- https://docs.vectcut.com/321245348e0\n\n## 何时使用\n\n- 用户说“给这段加特效”\n- 用户希望“重点处理某个片段”\n- 用户想让开场更有冲击力\n- 用户要在口播里做“悬疑/疑问/反向例子”氛围\n- 用户想强调商品细节、突出惊讶或灵感瞬间\n\n## 鉴权前置（必须）\n\n- 检查 `VECTCUT_API_KEY`\n- 缺失或疑似失效时，先调用 `vectcut-login`\n\n## 常用特效推荐（优先）\n\n- 场景特效 `聚光灯`：口播开头、悬疑、疑问\n- 场景特效 `暗角`：口播开头、悬疑、疑问\n- 场景特效 `放大镜`：电商细节强调\n- 场景特效 `模糊`：口播画中画背景、反向例子\n- 人物特效 `大头`：带货吃惊反应\n- 人物特效 `灵机一动`：重点表达、灵感瞬间\n\n## 可设置参数\n\n`add_effect` 常用参数：\n- `effect_type`：特效名称（必填）\n- `start`：开始时间（秒，默认 `0.0`）\n- `end`：结束时间（秒，默认 `3.0`）\n- `draft_id`：草稿 ID（可选）\n- `track_name`：特效轨道名（默认 `effect_01`）\n- `params`：特效参数数组（可选，数字列表；未传按系统默认）\n\n说明：\n- `params` 的含义因特效类型而异，不同特效支持的参数个数和范围不同。\n- 若不确定 `params`，建议先不传，使用特效默认参数更稳妥。\n\n## 执行方式\n\n先准备请求 JSON，例如：\n\n```json\n{\n  \"draft_id\": \"dfd_xxx\",\n  \"effect_type\": \"聚光灯\",\n  \"start\": 0.0,\n  \"end\": 2.8,\n  \"track_name\": \"effect_hook\",\n  \"effect_category\": \"scene\"\n}\n```\n\n执行：\n\n```bash\npython <skill-path>/scripts/add_effect.py \\\n  \"/tmp/add_effect_payload.json\" \\\n  --output \"./add_effect_result.json\"\n```\n\n## 查询可用特效（官方列表）\n\n查询场景特效：\n\n```bash\npython <skill-path>/scripts/add_effect.py --list-scene\n```\n\n查询人物特效：\n\n```bash\npython <skill-path>/scripts/add_effect.py --list-character\n```\n\n查询全部特效：\n\n```bash\npython <skill-path>/scripts/add_effect.py --list-all\n```\n\n## 输入说明\n\n- 必填：\n  - `effect_type`\n- 可选：\n  - `draft_id`\n  - `start`（默认 `0.0`）\n  - `end`（默认 `3.0`）\n  - `track_name`（默认 `effect_01`）\n  - `params`（数字数组）\n  - `width`（默认 `1080`）\n  - `height`（默认 `1920`）\n  - `effect_category`（`scene` / `character` / `auto`，默认 `auto`，仅用于校验与推荐）\n\n## 输出结果\n\n默认输出 `add_effect_result.json`，核心字段：\n- `meta.endpoint`\n- `meta.effect_type`\n- `meta.resolved_category`\n- `request_payload`\n- `result.raw_response`\n\n## 失败处理建议\n\n- `effect_type` 不存在：先用 `--list-scene` / `--list-character` 查询后重试\n- `end <= start`：修正时间区间\n- `params` 不兼容：去掉 `params` 先用默认值验证效果\n- 鉴权失败：先执行 `vectcut-login`\n\nFile v1.5.8:rules/add-subtitle-template.md\n\n---\nname: add-subtitle-template\ndescription: \"根据用户输入的音视频与字幕信息，自动选择并套用字幕模板，生成并执行 VectCut execute_workflow 批量加字幕。用户提到“添加模板字幕/套字幕模板/批量加字幕/按词字幕动画”时务必使用本技能；涉及字幕但缺少结构化数据时也要优先触发本技能做分流。只要结果用于字幕上屏，严禁使用 basic 转写，必须走 nlp。\"\n---\n\n# Add Subtitle Template Skill\n\n把“字幕数据分析 -> 模板匹配 -> 工作流执行”做成一条稳定链路，目标是批量添加模板字幕并返回可继续编辑的 `draft_id`。\n\n技能内置脚本（按 skill-creator 规范打包在 `scripts/`，必须优先用这些脚本）：\n- `<skill-path>/scripts/apply_subtitle_template.py`（统一入口：自动标准化 + 自动选模板）\n- `<skill-path>/scripts/template_word_pop.py`（词块弹入）\n- `<skill-path>/scripts/template_roll_focus.py`（滚动聚焦）\n- `<skill-path>/scripts/template_slide_in_out.py`（句级上滑入/上滑出）\n- `<skill-path>/scripts/template_karaoke_highlight.py`（逐词高亮 Karaoke）\n- `<skill-path>/scripts/template_dual_track_motion.py`（交替轨道 + 关键帧上移）\n- `<skill-path>/scripts/template_bilingual_keyword.py`（中英双语 + 关键词高亮）\n- `<skill-path>/scripts/template_preset_transition.py`（主字幕 + 预设转场）\n- `<skill-path>/scripts/koubo_auto_edit.py`（口播一键编排：`nlp` 字幕 + 模板 + 提示音 + 特效 + BGM）\n- 要求：先把用户输入字幕标准化为模板可接收结构，再调用模板函数产出 `draft_id + inputs + script`\n- 禁止直接重写模板逻辑；只允许做“输入映射/补齐”和“执行 workflow”\n\n## 字幕上屏硬约束\n\n- 只要进入“字幕模板/字幕上屏/草稿写回”链路，`effect_mode=basic` 一律拒绝执行\n- `basic` 仅允许用于素材分析与粗预览，不得作为上屏输入\n- 发现输入里标记为 `basic`（如 `meta.effect_mode=basic` 或 `meta.asr_effect_mode=basic`）时，必须报错并要求改为 `llm-asr --effect-mode nlp`\n\n字幕输入对齐规则（把用户字幕向 `scripts/` 模板输入靠拢）：\n- 所有模板函数签名都按 `func(segments, draft_id)` 调用，核心是先构造 `segments`\n- `segments` 标准项优先包含：`start`、`end`、`text`，单位统一毫秒\n- 若用户给的是秒：乘以 `1000` 转毫秒；若已是毫秒：保持不变\n- 若缺 `end`：用下一段 `start`，无下一段则用 `start + 1000~2000ms` 兜底\n- 若要走词块模板（`template_word_pop.py`）：尽量补 `phrase=[{text,start_time,end_time}]`，无词级时间则按句子时长均分\n- 若只具备句级字幕：优先走句级模板（`template_slide_in_out.py` / `template_roll_focus.py` / `template_dual_track_motion.py` / `template_preset_transition.py`）\n\n模板调用方式（固定）：\n- 优先调用统一入口：`python <skill-path>/scripts/apply_subtitle_template.py --input <subtitle_json> --draft-id <draft_id>`\n- 默认随机选模板；如需复现可追加 `--selection-mode stable`\n- 所有模板统一通过“命名入口函数”调用：`apply_template(segments, draft_id)`\n- 模板函数返回值直接作为 `execute_workflow` 的请求体（或其主体字段），不要手工重拼一套新脚本\n- 若用户显式指定模板文件名，优先按用户指定模板执行\n\n工作流接口文档：\n- https://docs.vectcut.com/363414609e0\n\n## 鉴权前置（必须）\n\n- 在调用 `llm-asr`、`execute_workflow` 或任何 VectCut 接口前，先检查环境变量 `VECTCUT_API_KEY`\n- 若未设置 `VECTCUT_API_KEY`，必须先调用 `vectcut-login` 技能完成登录和 token 校验，再继续本技能流程\n- 禁止在缺少 token 的情况下直接继续执行模板写入或工作流调用\n\n## 何时使用\n\n- 用户要“添加模板字幕”“套用字幕模板”“批量添加字幕”“词级字幕动画”\n- 用户给了字幕或音视频素材，希望自动完成模板字幕上屏\n- 用户给了 `draft_id`，希望在已有草稿继续加字幕\n\n## 输入识别（严格三分支）\n\n先判断用户输入是否包含以下数据：\n- 结构化字幕：`segments`（句级或词级时间戳，至少有 `start/end/text`）\n- 媒体信息：`audio_url` / `video_url`（可单独一种，也可都有）\n\n按以下顺序分流：\n\n1. **仅有字幕，无音视频（情况 1.1）**\n- 不执行模板写入\n- 明确提示用户补充可访问的 `audio_url` 或 `video_url`\n- 说明原因：缺少媒体来源会影响时间轴校验与可复现执行\n\n2. **仅有音视频，无结构化字幕（情况 1.2）**\n- 必须先调用 `llm-asr` 技能提取结构化字幕\n- 默认 `effect_mode` 固定 `nlp`\n- 拿到 `segments` 后进入“模板匹配”步骤\n\n3. **音视频 + 结构化字幕都已具备（情况 1.3）**\n- 直接进入“模板匹配”步骤\n\n## 模板匹配（两种情况）\n\n### 情况 2.1：可直接套用\n\n当字幕结构满足模板最低要求时，直接套用。默认选型顺序：\n\n1. 有 `en` 字段或用户要求双语 -> `template_bilingual_keyword.py`\n2. 有完整 `words[].start_time/end_time` 且要逐词高亮 -> `template_karaoke_highlight.py`\n3. 用户要求预设样式/预设贴纸感 -> `template_preset_transition.py`\n4. 用户要求交替轨道、字幕位移动画 -> `template_dual_track_motion.py`\n5. 用户要求词块弹入 -> `template_word_pop.py`\n6. 用户要求滚动聚焦 -> `template_roll_focus.py`\n7. 仅句级普通上屏（无特殊效果）：\n   - 不要固定死一个模板；默认随机分流（可切换稳定模式用于复现）\n   - 可在 `template_slide_in_out.py` / `template_roll_focus.py` / `template_dual_track_motion.py` / `template_preset_transition.py` 间自动选择\n\n### 情况 2.2：需调整后套用\n\n若字幕结构不完整，先做最小补齐再套用模板：\n\n- 缺 `end`：用下一句 `start` 或当前 `start + 1~2s` 兜底\n- 缺词级时间戳：按句子时长均分到词/字\n- 毫秒与秒混用：统一转换为秒（float）\n- 空文本段：剔除\n- 时长异常（`end < start`）：修正为 `end = start`\n\n补齐完成后再次判断模板可用性，再进入套用。\n\n## 工作流构建规范\n\n目标是产出 `workflow_json`：\n- 顶层字段：`draft_id`（可选）、`inputs`、`script`\n- `script` 内步骤使用 `action/for/if/set_var`\n- 批量字幕写入优先用 `for + add_text (+ add_video_keyframe)`\n\n建议输出结构：\n\n```json\n{\n  \"draft_id\": \"可选，存在则复用\",\n  \"inputs\": {\n    \"subtitles\": []\n  },\n  \"script\": []\n}\n```\n\n说明：\n- 若用户已有 `draft_id`，必须放入请求体，基于原草稿继续编辑\n- 若没有 `draft_id`，不传该字段，由服务端新建草稿\n\n## 执行步骤（必须执行）\n\n1. 完成输入分流（1.1/1.2/1.3）\n2. 完成模板匹配（2.1/2.2）\n3. 生成 `workflow_json`（含 `inputs+script`，必要时含 `draft_id`）\n4. 调用 `POST /cut_jianying/execute_workflow`\n5. 返回结果中的：\n   - `success`\n   - `output.draft_id`\n   - `output.draft_url`\n   - `error`（若失败）\n\n## 口播自动包装\n\n当用户目标是“剪网感口播/开始剪口播/一键成片”，在字幕执行成功后必须追加以下步骤：\n\n1. `add-effect_audio`：开头 `target_start=0` 添加一次提示音\n2. `add-effect`：开头与重点句时间段各添加一次特效\n3. `add-bgm`：查询草稿时长后自动铺满背景音乐\n\n可直接使用：\n\n```bash\npython <skill-path>/scripts/koubo_auto_edit.py \"https://example.com/video.mp4\"\n```\n\n## 与用户交互规则\n\n- 情况 1.1 只做补全提示，不编造素材 URL\n- 情况 1.2 先告知“将先做 ASR 再套模板”，再执行\n- 模板不唯一时，给出简短推荐并默认选更稳的模板：\n  - 词级数据充分 -> 模板 A\n  - 仅句级数据 -> 模板 B\n\n## 输出要求\n\n- 成功：给出本次使用模板、关键处理（是否做补齐）、`draft_id`、`draft_url`\n- 失败：给出失败步骤（ASR / 模板构建 / execute_workflow）与原始错误信息\n- 不要输出与用户请求无关的长解释\n\nFile v1.5.8:rules/add-title.md\n\n---\nname: add-title\ndescription: \"使用 add_text 接口在视频中添加固定位置标题（通常位于口播画面下方标题位），支持字体与颜色规范化选择。用户提到“加标题”“视频标题条”“口播标题固定位置”“给草稿加标题文案”时必须使用本技能。\"\n---\n\n# Add Title Skill\n\n用于调用 VectCut `add_text` 接口在视频草稿里添加标题文本，默认采用固定标题位参数，适合口播、带货、讲解视频的主标题覆盖。\n\n官方接口文档：\n- https://docs.vectcut.com/321240978e0\n\n## 何时使用\n\n- 用户要求给视频加标题/主标题\n- 用户要做固定位置标题栏\n- 用户已有 `draft_id`，只需要补一条标题文字轨道\n\n## 鉴权前置（必须）\n\n- 检查 `VECTCUT_API_KEY`\n- 缺失或疑似失效时，先调用 `vectcut-login`\n\n## 默认布局（固定标题位）\n\n基于你给的示例，默认参数如下：\n- `track_name=text_title`\n- `start=0.0`\n- `transform_y_px=1240`\n- `fixed_width=0.6`\n- `shadow_enabled=true`\n- `font_size=18`\n\n## 字体与颜色规范\n\n字体（建议从以下集合选择）：\n- `思源粗宋`\n- `俪金黑`\n- `研宋体`\n- `细体`\n\n颜色（十六进制）：\n- `#ffffff`\n- `#ffa800`\n- `#b71c1c`\n- `#18893e`\n\n## 执行方式\n\n先准备请求 JSON，例如：\n\n```json\n{\n  \"draft_id\": \"dfd_xxx\",\n  \"text\": \"新款上线\",\n  \"end\": 12.5,\n  \"font\": \"思源粗宋\",\n  \"font_color\": \"#ffffff\"\n}\n```\n\n执行：\n\n```bash\npython <skill-path>/scripts/add_title.py \\\n  \"/tmp/add_title_payload.json\" \\\n  --output \"./add_title_result.json\"\n```\n\n## 输入说明\n\n- 必填：\n  - `draft_id`\n  - `text`\n  - `end`\n- 可选：\n  - `start`（默认 `0.0`）\n  - `track_name`（默认 `text_title`）\n  - `font`（默认 `思源粗宋`）\n  - `font_color`（默认 `#ffffff`）\n  - `font_size`（默认 `18`）\n  - `transform_y_px`（默认 `1240`）\n  - `fixed_width`（默认 `0.6`）\n  - `shadow_enabled`（默认 `true`）\n\n## 输出结果\n\n默认输出 `add_title_result.json`，核心字段：\n- `meta.endpoint`\n- `meta.draft_id`\n- `request_payload`\n- `result.raw_response`\n\n## 失败处理建议\n\n- `draft_id` 缺失：先创建草稿或传入已有草稿\n- `end <= start`：修正时间区间\n- 字体/颜色不在建议集合：按技能推荐值回退\n\nArchive v1.5.7: 63 files, 149409 bytes\n\nFiles: references/ai-image-model_capabilities.json (9334b), references/bgms.json (946b), references/cover_prompt_references.md (4610b), references/effect_audios.json (792b), references/model_capabilities.json (1893b), rules/add-bgm.md (3180b), rules/add-effect_audio.md (3093b), rules/add-effect.md (3440b), rules/add-subtitle-template.md (8162b), rules/add-title.md (2295b), rules/asr-vad.md (5309b), rules/cloud-render.md (2870b), rules/cut-koubo-template.md (3750b), rules/cut-koubo.md (15377b), rules/describe-video.md (3705b), rules/extract-audio.md (2079b), rules/generate-ai-image.md (3818b), rules/generate-ai-video.md (2338b), rules/generate-cover.md (7184b), rules/human-pip.md (3867b), rules/llm-asr.md (5594b), rules/modify-draft.md (1739b), rules/query-draft.md (5274b), rules/scrapt-video.md (2727b), rules/speech-synthesis.md (2389b), rules/split-video.md (3097b), rules/sts-upload.md (3067b), rules/text-background.md (3612b), rules/text-keywords.md (4513b), rules/vectcut-api-search.md (1931b), rules/vectcut-login.md (2173b), rules/zoom-in-out.md (3335b), scripts/add_bgm.py (8853b), scripts/add_effect_audio.py (7091b), scripts/add_effect.py (9762b), scripts/add_title.py (4255b), scripts/apply_subtitle_template.py (9451b), scripts/asr_vad.py (8470b), scripts/cloud_render.py (3719b), scripts/describe_video.py (42233b), scripts/extract_audio_async.py (4763b), scripts/generate_ai_image_async.py (9741b), scripts/generate_ai_video_async.py (8564b), scripts/human_pip_async.py (6246b), scripts/llm_asr_async.py (10652b), scripts/modify_draft.py (1879b), scripts/query_draft.py (1910b), scripts/scrapt_video.py (8592b), scripts/search_vectcut_api.py (5827b), scripts/split_video_async.py (6874b), scripts/sts_upload.py (3716b), scripts/template_bilingual_keyword.py (36345b), scripts/template_dual_track_motion.py (16076b), scripts/template_karaoke_highlight.py (16617b), scripts/template_preset_transition.py (16122b), scripts/template_roll_focus.py (18402b), scripts/template_slide_in_out.py (4226b), scripts/template_word_pop.py (20763b), scripts/text_background_async.py (6422b), scripts/vectcut_login.py (2758b), scripts/zoom_in_out.py (16362b), SKILL.md (4570b), _meta.json (126b)\n\nFile v1.5.7:SKILL.md\n\n---\nname: vectcut-skill\ndescription: \"VectCut 全能剪辑聚合技能。用于剪口播、混剪、电商广告等场景，统一编排流光剪辑能力（字幕、音频、特效、画中画、抠像、AI补镜、AI配音、平台视频抓取、渲染导出）。当用户提出“做成片/自动剪辑/口播包装/广告剪辑/抓平台视频后再剪”等需求时，必须优先使用本技能。\"\nhomepage: \"https://www.vectcut.com/\"\nmetadata:\n  openclaw:\n    emoji: \"🎬\"\n    requires:\n      env: [\"VECTCUT_API_KEY\"]\n    primaryEnv: \"VECTCUT_API_KEY\"\ndependency:\n---\n\n## 触发场景\n\n- 口播自动成片、网感剪辑、去气口重排、口播包装\n- 混剪视频（多素材重组、节奏强化、字幕动画、转场特效）\n- 电商广告（卖点强化、人物抠像、画中画、关键词强调、提示音）\n- 需要“抓取抖音/快手/小红书/B站/TikTok/YouTube 链接后分析并剪辑”\n- 想要查看VectCut 流光剪辑的API都支持哪些功能，具体API怎么使用。\n- 需要“AI 补镜 / AI 生成图片或视频 / AI 配音 / 云渲染导出”\n\n## 统一前置规则（沿用）\n\n1. 任何 VectCut 调用前，先检查 `VECTCUT_API_KEY`\n2. 缺失、为空或鉴权失败时，先调用 `vectcut-login`\n3. 输入是本地素材路径时，先调用 `sts-upload` 转公网 URL 再继续\n4. 关键节点后调用 `query-draft` 做草稿校验\n5. 接口参数不确定或报错时，用 `vectcut-api-search` 查询最新文档再修正\n\n## 场景路由策略（聚合编排）\n\n1. **平台链接输入**\n- 先走 `scrapt-video` 抓取视频信息与直链\n- 自动衔接 `describe-video` 做字幕+画面分析\n- 再按用户目标进入口播链、混剪链或广告链\n\n2. **口播成片（模板稳定链）**\n- 用户明确提到“模板口播/固定风格/稳定复现/降低不确定性”时，优先走 `cut-koubo-template`\n- 输入按模板接口严格校验（不同模板的必填参数不同，如 `title` 或 `kongjing_urls`）\n- 通过官方 `submit_agent_task` 固定链路出草稿，随后调用 `generate-cover`，并询问用户是否执行 `prepend_image` 插入首帧\n\n3. **口播成片（默认主链）**\n- 未指定模板稳定链时，优先走 `cut-koubo` 完成一体化编排\n- 最后可选 `cloud-render`\n\n4. **混剪链路**\n- `describe-video` 做素材盘点\n- `split-video` 切片重组\n- `add-subtitle-template` 字幕上屏（如果有字幕）\n- `add-effect` / `zoom-in-out` 强化节奏\n- `add-bgm` + `add-effect_audio` 收口\n- `cloud-render` 导出\n\n5. **电商广告链路**\n- 人物突出优先：`human-pip` 或 `text-background`\n- 卖点强调：`text-keywords` + `add-title`\n- 素材不足：`generate-ai-image` / `generate-ai-video`\n- 配音需求：`speech-synthesis`\n- 包装完成后最终 `cloud-render`\n\n## 字幕与音频规则\n\n- 若需口播精剪，优先 `llm-asr`(nlp档位) + `asr-vad`，确保字幕时间轴与剪辑后内容一致\n- 需要字幕上屏时，优先 `add-subtitle-template` 统一模板化输出\n- BGM 全片铺设用 `add-bgm`，关键点提示音用 `add-effect_audio`\n\n## 输出要求\n\n- 至少返回：`draft_id`、`draft_url`\n- 同步返回：执行的技能链路摘要（调用顺序与关键结果）\n- 若失败：返回失败步骤、原始错误、建议修复动作（优先 `query-draft` + `vectcut-api-search`）\n- 用户要求导出成片时：调用 `cloud-render` 并返回可播放/下载地址\n\n## 目录索引\n\n- [add-bgm](rules/add-bgm.md)\n- [add-effect](rules/add-effect.md)\n- [add-effect_audio](rules/add-effect_audio.md)\n- [add-subtitle-template\n\nArchive v1.5.6: 62 files, 146898 bytes\n\nFiles: references/ai-image-model_capabilities.json (9334b), references/bgms.json (946b), references/cover_prompt_references.md (4610b), references/effect_audios.json (792b), references/model_capabilities.json (1893b), rules/add-bgm.md (3180b), rules/add-effect_audio.md (3093b), rules/add-effect.md (3440b), rules/add-subtitle-template.md (8162b), rules/add-title.md (2295b), rules/asr-vad.md (5309b), rules/cloud-render.md (2870b), rules/cut-koubo.md (13117b), rules/describe-video.md (3705b), rules/extract-audio.md (2079b), rules/generate-ai-image.md (3818b), rules/generate-ai-video.md (2338b), rules/generate-cover.md (7184b), rules/human-pip.md (3867b), rules/llm-asr.md (5594b), rules/modify-draft.md (1739b), rules/query-draft.md (5274b), rules/scrapt-video.md (2727b), rules/speech-synthesis.md (2389b), rules/split-video.md (3097b), rules/sts-upload.md (3067b), rules/text-background.md (3612b), rules/text-key...","readmeExcerpt":"Skill: VectCut: The first \"To-Agent\" video editing platform. Build automated video workflows with our stable cloud APIs in Coze, Dify, or OpenClaw. Owner: sun-guannan Summary: VectCut 全能剪辑聚合技能。用于剪口播、混剪、电商广告等场景，统一编排流光剪辑能力（字幕、音频、特效、画中画、抠像、AI补镜、AI配音、预设、平台视频抓取、渲染导出），也支持把既有视频制作流程整理为飞书多维表格自动化工作流。当用户提出“做成片/自动剪辑/口播包装/广告剪辑/抓平台视频后再剪”，或想把视频制作... Tags: latest:1.5.11 Version history: v1.5.11 | 2026-05-25T02:16:44.303Z | user No c","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n  \"draft_id\": \"dfd_xxx\",\n  \"bgm_index\": 0,\n  \"track_name\": \"audio_bgm\"\n}"},{"language":"bash","snippet":"python <skill-path>/scripts/add_bgm.py \\\n  \"/tmp/add_bgm_payload.json\" \\\n  --output \"./add_bgm_result.json\""},{"language":"json","snippet":"{\n  \"draft_id\": \"dfd_xxx\",\n  \"target_start\": 0.0,\n  \"effect_audio_index\": 0,\n  \"track_name\": \"audio_effect\",\n  \"volume\": 0.0\n}"},{"language":"bash","snippet":"python <skill-path>/scripts/add_effect_audio.py \\\n  \"/tmp/add_effect_audio_payload.json\" \\\n  --output \"./add_effect_audio_result.json\""},{"language":"json","snippet":"{\n  \"draft_id\": \"dfd_xxx\",\n  \"effect_type\": \"聚光灯\",\n  \"start\": 0.0,\n  \"end\": 2.8,\n  \"track_name\": \"effect_hook\",\n  \"effect_category\": \"scene\"\n}"},{"language":"bash","snippet":"python <skill-path>/scripts/add_effect.py \\\n  \"/tmp/add_effect_payload.json\" \\\n  --output \"./add_effect_result.json\""}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: vectcut-skill\ndescription: \"VectCut 全能剪辑聚合技能。用于剪口播、混剪、电商广告等场景，统一编排流光剪辑能力（字幕、音频、特效、画中画、抠像、AI补镜、AI配音、预设、平台视频抓取、渲染导出），也支持把既有视频制作流程整理为飞书多维表格自动化工作流。当用户提出“做成片/自动剪辑/口播包装/广告剪辑/抓平台视频后再剪”，或想把视频制作流程固化为飞书多维表格 AI Agent 工作流时，必须优先使用本技能。\"\nhomepage: \"https://www.vectcut.com/\"\nmetadata:\n  openclaw:\n    emoji: \"🎬\"\n    requires:\n      env: [\"VECTCUT_API_KEY\"]\n    primaryEnv: \"VECTCUT_API_KEY\"\ndependency:\n---\n\n## 触发场景\n\n- 口播自动成片、网感剪辑、去气口重排、口播包装\n- 混剪视频（多素材重组、节奏强化、字幕动画、转场特效）\n- 用户口语表达“混剪在一起 / 拼在一起 / 合成一条 / 随机拼接”这类意图\n- 电商广告（卖点强化、人物抠像、画中画、关键词强调、提示音）\n- 需要基于“预设片段”替换素材、组合复杂包装效果（如把 `text1` 改为指定文案）\n- 需要“抓取抖音/快手/小红书/B站/TikTok/YouTube 链接后分析并剪辑”\n- 想要查看VectCut 流光剪辑的API都支持哪些功能，具体API怎么使用。\n- 需要“AI 补镜 / AI 生成图片或视频 / AI 配音 / 云渲染导出”\n- 已有 `dfd_cat_` 草稿 ID，希望一键拉取到客户端（单个或批量）\n- 想把刚整理好的视频生产链路固化为飞书多维表格工作流，输出字段结构和 AI Agent 提示词\n\n## 统一前置规则（沿用）\n\n1. 任何 VectCut 调用前，先检查环境变量 `VECTCUT_API_KEY`（检查环境变量，不是本地配置文件）。默认通过 Bash 工具执行命令，包括windows环境也是。例如 `echo \"$VECTCUT_API_KEY\"` 或 `printenv VECTCUT_API_KEY` 来判断。\n2. 缺失、为空或鉴权失败时，先调用 `vectcut-login`\n3. 在进入任何具体技能链路前，优先先调用 `vectcut-api-search` 做一次全局能力扫描；因为它覆盖 VectCut 全量 API 索引、文件体量小、负担低，可以先快速掌握当前有哪些可用功能与接口入口\n4. 需要“在已有草稿继续编辑”时，输入参数必须显式携带 `draft_id`，并在后续所有写入接口（如 `add_video/add_audio/execute_workflow`）中持续透传同一个 `draft_id`\n5. 未传 `draft_id` 时，服务端通常会新建草稿；禁止在同一任务中混用多个草稿（避免字幕、音频落到不同草稿）\n6. 输入是本地素材路径时，先调用 `sts-upload` 转公网 URL 再继续\n7. 关键节点后调用 `query-draft` 做草稿校验\n8. 接口参数不确定、需要选型或报错时，用 `vectcut-api-search` 查询最新文档再修正；即使没有报错，也鼓励先用它确认是否已有更合适的现成接口\n## 场景路由策略（聚合编排）\n\n1. **平台链接输入**\n- 先走 `scrapt-video` 抓取视频信息与直链\n- 自动衔接 `describe-video` 做字幕+画面分析\n- 再按用户目标进入口播链、混剪链或广告链\n\n2. **口播成片（模板稳定链，默认优先）**\n- 口播成片默认优先走 `cut-koubo-template`（无需用户显式提及“模板”）\n- 去气口也属于口播剪辑场景，默认同样优先走 `cut-koubo-template`\n- 输入按模板接口严格校验（不同模板的必填参数不同，如 `title` 或 `kongjing_urls`）\n- 通过官方 `submit_agent_task` 固定链路出草稿，随后调用 `generate-cover`，并询问用户是否执行 `prepend_image` 插入首帧\n\n3. **口播成片（回退主链）**\n- 仅在模板链不适配（如模板必填参数无法满足）或用户明确要求开放式重排编排时，走 `cut-koubo`（包括去气口场景）\n- 最后可选 `cloud-render`\n\n4. **混剪链路**\n- `describe-video` 做素材盘点\n- `split-video` 切片重组\n- `add-subtitle-template` 字幕上屏（仅限已有字幕或需先从音视频生成字幕的场景）\n- `add-effect` / `zoom-in-out` 强化节奏\n- `add-bgm` + `add-effect_audio` 收口\n- `cloud-render` 导出\n\n4.1 **混剪配音成片（video-voiceover-remix 子链路）**\n- 触发词与同义表达：`混剪在一起`、`拼在一起`、`合成一条`、`随机拼接`、`多段视频组合`\n- 当用户只说“混剪在一起”且未给更细约束时，默认优先路由到 `video-voiceover-remix`，并在执行前简短告知将采用“混剪+解说+字幕+BGM”标准链路\n- 先按 `rules/video-voiceover-remix.md` 执行固定七步：`describe-video` -> `add_video(volume=-100)` -> 基于 `describe-video` 结果生成文案 -> `speech-synthesis + add_audio(volume=20)` -> `llm-asr(nlp) + add-subtitle-template` -> `add-bgm` -> `add-effect_audio`\n- 第 2 步重排优先调用内置脚本：`scripts/remix_and_add_videos.py`\n- 第 3 步文案字数按每秒 5 字估算\n- 第 4 步默认音色：`voice_id=gv_8195cd8b03f74658a9d92c9b2a9e9cba`，并提示用户可到 VectCut 官网查看可用音色\n\n5. **电商广告链路**\n- 人物突出优先：`human-pip` 或 `text-background`\n- 卖点强调：`text-keywords` + `add-title`\n- 素材不足：`generate-ai-image` / `generate-ai-video`\n- 配音需求：`speech-synthesis`\n- 包装完成后最终 `cloud-render`\n\n6. **草稿下载链路**\n- 用户提供一个或多个 `dfd_cat_` 草稿 ID 时，调用 `draft-downloader`\n- 先做去空、去重与 `dfd_cat_` 前缀校验，再触发 deepli"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7cjw4v6q9zst2vc2w79er98h82a3wt\",\n  \"slug\": \"vectcut\",\n  \"version\": \"1.5.11\",\n  \"publishedAt\": 1779675404303\n}"},{"path":"references/ai-image-model_capabilities.json","content":"{\n  \"version\": \"2026-04-17\",\n  \"source_docs\": [\n    \"https://docs.vectcut.com/443760774e0\"\n  ],\n  \"reference_image_limit_exclusive\": 14,\n  \"models\": {\n    \"nano_banana_2\": {\n      \"aliases\": [\n        \"nano_banana_2\",\n        \"gemini-3.1-flash-image\",\n        \"gemini-3.1-flash-image-preview\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"848x1264\",\n        \"1264x848\",\n        \"896x1200\",\n        \"1200x896\",\n        \"928x1152\",\n        \"1152x928\",\n        \"768x1376\",\n        \"1376x768\",\n        \"1584x672\",\n        \"2048x2048\",\n        \"1696x2528\",\n        \"2528x1696\",\n        \"1792x2400\",\n        \"2400x1792\",\n        \"1856x2304\",\n        \"2304x1856\",\n        \"1536x2752\",\n        \"2752x1536\",\n        \"3168x1344\",\n        \"4096x4096\",\n        \"3392x5056\",\n        \"5056x3392\",\n        \"3584x4800\",\n        \"4800x3584\",\n        \"3712x4608\",\n        \"4608x3712\",\n        \"3072x5504\",\n        \"5504x3072\",\n        \"6336x2688\"\n      ],\n      \"size_profiles\": {\n        \"1K\": [\n          {\"size\": \"1024x1024\", \"ratio\": \"1:1\"},\n          {\"size\": \"848x1264\", \"ratio\": \"2:3\"},\n          {\"size\": \"1264x848\", \"ratio\": \"3:2\"},\n          {\"size\": \"896x1200\", \"ratio\": \"3:4\"},\n          {\"size\": \"1200x896\", \"ratio\": \"4:3\"},\n          {\"size\": \"928x1152\", \"ratio\": \"4:5\"},\n          {\"size\": \"1152x928\", \"ratio\": \"5:4\"},\n          {\"size\": \"768x1376\", \"ratio\": \"9:16\"},\n          {\"size\": \"1376x768\", \"ratio\": \"16:9\"},\n          {\"size\": \"1584x672\", \"ratio\": \"21:9\"}\n        ],\n        \"2K\": [\n          {\"size\": \"2048x2048\", \"ratio\": \"1:1\"},\n          {\"size\": \"1696x2528\", \"ratio\": \"2:3\"},\n          {\"size\": \"2528x1696\", \"ratio\": \"3:2\"},\n          {\"size\": \"1792x2400\", \"ratio\": \"3:4\"},\n          {\"size\": \"2400x1792\", \"ratio\": \"4:3\"},\n          {\"size\": \"1856x2304\", \"ratio\": \"4:5\"},\n          {\"size\": \"2304x1856\", \"ratio\": \"5:4\"},\n          {\"size\": \"1536x2752\", \"ratio\": \"9:16\"},\n          {\"size\": \"2752x1536\", \"ratio\": \"16:9\"},\n          {\"size\": \"3168x1344\", \"ratio\": \"21:9\"}\n        ],\n        \"4K\": [\n          {\"size\": \"4096x4096\", \"ratio\": \"1:1\"},\n          {\"size\": \"3392x5056\", \"ratio\": \"2:3\"},\n          {\"size\": \"5056x3392\", \"ratio\": \"3:2\"},\n          {\"size\": \"3584x4800\", \"ratio\": \"3:4\"},\n          {\"size\": \"4800x3584\", \"ratio\": \"4:3\"},\n          {\"size\": \"3712x4608\", \"ratio\": \"4:5\"},\n          {\"size\": \"4608x3712\", \"ratio\": \"5:4\"},\n          {\"size\": \"3072x5504\", \"ratio\": \"9:16\"},\n          {\"size\": \"5504x3072\", \"ratio\": \"16:9\"},\n          {\"size\": \"6336x2688\", \"ratio\": \"21:9\"}\n        ]\n      }\n    },\n    \"nano_banana_pro\": {\n      \"aliases\": [\n        \"nano_banana_pro\",\n        \"gemini-3-pro-image-preview\"\n      ],\n      \"supports_reference_images\": true,\n      \"allowed_sizes\": [\n        \"1024x1024\",\n        \"848x1264\",\n        \"1264x848\",\n        \"896x1200\",\n        \"1200x896\",\n        \"928x1152\",\n        \"1152x928\",\n        \"768x1376\",\n        \"1376x768\",\n        \"1584x672\",\n        \"2048x2048\",\n        \"16"},{"path":"references/bgms.json","content":"{\n  \"bgms\": [\n    \"https://player.install-ai-guider.top/koubo/bgm/void.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/time_to_pretend.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/the_right_path.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/spoons_for_loons.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/night_cruising.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Monsieur_melody.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/melody_mix.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/IV_feat.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Golden_hour.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/Fight.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/%E5%BF%99%E7%A2%8C%E7%9A%84%E7%94%9F%E6%B4%BB%E4%BA%BA%E5%B1%B1%E4%BA%BA%E6%B5%B7.MP3\",\n    \"https://player.install-ai-guider.top/koubo/bgm/%E8%9D%B4%E8%9D%B6%E6%AD%A5.MP3\"\n  ]\n}"},{"path":"references/cover_prompt_references.md","content":"# Generate Cover Prompt References\n\n用于 `submit_task/generate` 前的提示词润色参考。请先理解草稿主题，再从下列风格中抽取表达，不要生硬照抄整段。\n\n## 使用规则\n\n- 目标：把 `query_script` 提取的主题、卖点、受众转成“可执行画面语言”。\n- 结构建议：`画面类型 + 主体 + 场景元素 + 构图/镜头 + 质感/色彩 + 文字排版要求(可选)`。\n- 优先“语义清洗”：将草稿里的原始字段、文件名、JSON 结构转为自然语言短语。\n- 可复用关键词：精准构图、视觉冲击力、高对比度、高饱和度、留白、层次、系列化风格。\n- 默认输出“海报封面”而非“纯场景图”：除非用户明确要求无字，必须写入标题文案与排版信息。\n- 文案字段建议：`主标题(headline)`、`副标题(subheadline)`、`角标/标签(badge)`、`位置(左上/中上/右下)`、`字体风格(粗体/手写/无衬线)`。\n- 母版选择建议：每次随机抽取 1 条参考提示词作为母版，不固定单一参考。\n- 人物口播约束：人物主体保持写实高保真（脸部特征/肤质/服饰不做卡通化）；风格化优先作用于背景、图形元素和文字排版。\n\n## 内置参考提示词（用户提供）\n\n### 参考 1：美式漫画综艺混剪\n\n创作一张美式漫画风的综艺混剪自媒体封面：背景为蓝色波点渐变底，搭配黄色闪电、星光、卡通点赞手等装饰元素；排版采用“顶部大标题 + 话题标签 + 人物周边气泡文案”的分层结构，顶部绿色对话框内用白色粗体字呈现“超闪亮时刻”，下方蓝色对话框内排版“# 高小定综艺混剪”；将参考图里的人物形象抠出，并且人物居中，周围环绕两个漫画风格气泡框，分别标注“接梗补刀”“高能救场”（字体为蓝色粗体，搭配白色外框）；整体色调以蓝、黄、绿为主，明亮活泼，风格融合美式漫画的夸张动感与综艺内容的吸睛属性，传递出热闹有趣的视觉效果。\n\n### 参考 2：杂志海报\n\n杂志风格,画面主体是冷艳时尚的人物，人物形象来源于参考图里的人物形象抠出，姿态张力十足。左上角以大号白色衬线字体呈现刊名《VOGUE》，字母锐利有质感；左侧中下部用黑色细体字竖排标注 “FEBRUARY 2025 | URBAN EDGE”，点明月份与主题；右下角则以金色小号字体印出 “COVER STAR: ELLA CHEN”，强化人物身份。背景为极简浅灰，黑色胶带元素穿插其中。光线是硬调侧光，塑造强烈阴影与时尚氛围。色彩黑、绿、白对比高级，构图中心对称。使用哈苏 H6D-100c，HC 80mm f/2.8，快门 1/250s，光圈 f/3.5，ISO 100。后期文字排版与画面风格统一，字体质感匹配整体冷冽高级感，让封面既具视觉冲击又信息清晰。\n\n### 参考 3：复古风海报\n\n复古风海报，采用拼贴艺术风格，主色调深咖加米黄色，背景融合做旧报纸、方格笔记本、复古磁带、老式电视机、复古包包，等怀旧元素，搭配回形针等文具装饰，元素大小对比；主体是参考图里的人物半身，整体风格兼具复古感与潮流感，色彩复古柔和，画面上方放主标题潮流粗体艺术文字突出 “周一复古穿搭”小号字色块垫底“甜酷 | 校园 | 潮流”，下描放小文案“更适合你的复古校园穿搭” ，搭配描边线，手绘小元素等营造出充满年代感又时尚的视觉效果。\n\n### 参考 4：杂志封面\n《时代周刊》封面，主角为一位杰出的人物封面，人物形象是从参考图里扣出来的。儒商风范：优雅、睿智且老练。留着修剪整齐的黑色短发，身着剪裁考究的深色西装。神情沉稳自信，带着一丝会意的微笑。灯光为戏剧性的高对比度影棚灯光，具有典型的杂志封面肖像风格。背景带有《时代周刊》标志性的红色边框。文字元素包括左上角的‘TIME’字样，“The New Visionary”的粗体经典衬线字体标题。照片级真实感，超高清细节，8k分辨率，电影级画质，眼睛部分对焦清晰。”\n\n## 润色产出模板（推荐）\n\n可在第 3 步前先整理成一段最终 prompt：\n\n`封面设计，{风格定位}。主体：{核心人物/核心物体}。场景：{关键场景元素}。构图与镜头：{景别/视角/运动感}。色彩与质感：{主色调/材质}。版式：{是否需要标题、副标题、角标及其位置}。整体目标：{吸睛点/转化目标}。`"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1368,"uniquenessScore":42,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T11:53:29.618Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T11:53:29.618Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T02:20:27.687Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}