{"id":"fa8a2b79-baf1-4dc6-8e3d-7697a314328c","entityType":"agent","slug":"clawhub-maojiebc-majia-chatcut-koubo","name":"ChatCut口播 · 马甲实战版","canonicalUrl":"https://www.xpersona.co/agent/clawhub-maojiebc-majia-chatcut-koubo","canonicalPath":"/agent/clawhub-maojiebc-majia-chatcut-koubo","generatedAt":"2026-10-11T07:43:54.744Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T04:38:50.200Z","emptyReason":null},"description":"编排 ChatCut 官方能力，稳妥完成口播样片、整片扩展与验证 Skill: ChatCut口播 · 马甲实战版 Owner: maojiebc Summary: 编排 ChatCut 官方能力，稳妥完成口播样片、整片扩展与验证 Tags: agent-skills:1.7.0, ai-agent:1.7.0, captions:1.7.0, chatcut:1.7.0, claude-code:1.7.0, codex:1.7.0, latest:1.7.0, talking-head:1.7.0, video-editing:1.7.0 Version history: v1.7.0 | 2026-09-30T10:02:05.062Z | user 新增网页与桌面环境检查、字幕/转写/剪切/原声替换分流，避免只改字幕却重剪；原声替换单独审批，官方更新可追溯。离线检查通过，真实 ChatCut 写入、画面与人耳试听仍为 UNVERIFIED。 v1.6.0 | 2026-08-11T02","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s171vv4g1xczzsxtgd1wg0626x83khts:majia-chatcut-koubo","sourceUrl":"https://clawhub.ai/maojiebc/majia-chatcut-koubo","homepage":"https://clawhub.ai/maojiebc/skills/majia-chatcut-koubo","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/maojiebc/majia-chatcut-koubo","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/maojiebc/skills/majia-chatcut-koubo","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"编排 ChatCut 官方能力，稳妥完成口播样片、整片扩展与验证 Skill: ChatCut口播 · 马甲实战版 Owner: maojiebc Summary: 编排 ChatCut 官方能力，稳妥完成口播样片、整片扩展与验证 Tags: agent-skills:1.7.0, ai-agent:1.7.0, ca"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T04:38:50.200Z","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-11T04:38:50.200Z","emptyReason":null},"stars":null,"forks":null,"downloads":1157,"packageName":null,"latestVersion":"1.7.0","tractionLabel":"1.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T04:38:50.184Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T04:38:50.200Z","lastCrawledAt":"2026-10-11T04:38:50.184Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T04:38:50.184Z","lastVerifiedAt":null,"highlights":[{"version":"1.7.0","createdAt":"2026-09-30T10:02:05.062Z","changelog":"新增网页与桌面环境检查、字幕/转写/剪切/原声替换分流，避免只改字幕却重剪；原声替换单独审批，官方更新可追溯。离线检查通过，真实 ChatCut 写入、画面与人耳试听仍为 UNVERIFIED。","fileCount":291,"zipByteSize":2794823},{"version":"1.6.0","createdAt":"2026-08-11T02:09:42.481Z","changelog":"新增一句话稳剪、run/status/resume/report 主流程、样片审批与可恢复执行；离线编排和恢复验证通过，真实 ChatCut 写入/渲染/听审 canary 仍为 UNVERIFIED，stableClaimEligible=false。","fileCount":277,"zipByteSize":2284739},{"version":"1.4.0","createdAt":"2026-07-24T13:37:11.150Z","changelog":"可验证生产系统：新增 Rule Registry、Creator OS IR/SRT、可解释规划、审批、可恢复执行/证据、Media QA、交付与反馈治理；真实 adapter/发布保持 unverified 且不自动执行。","fileCount":187,"zipByteSize":361932},{"version":"1.3.0","createdAt":"2026-07-23T18:06:48.337Z","changelog":"v1.3.0 制度增量+ChatCut宿主实测档案+本地个人层:新增确认闸门(状态表先行硬闸/60秒预览闸/精校稿真相源/验收单元=完整成片体验);references 6→10册(chatcut-field-notes宿主实测档案/operating-manual八道硬闸/retention-structure四平台路由/recovery故障恢复);机器门禁policy.json不可放宽+validator升级(--terms个人词表/繁体/毫秒短卡);七执行状态+双素材呼吸感+窗口reframe shader路线;主题token对比度修正(海盐青7.67:1);本地个人层~/.config千人千面机制","fileCount":77,"zipByteSize":151334},{"version":"1.2.3","createdAt":"2026-07-23T03:34:46.455Z","changelog":"依赖 CVE 修复:CairoSVG>=2.7 固定为 ==2.9.0 消除 CVE-2026-31899(递归<use>指数级DoS);SKILL description 补前置/非目标收窄trigger;规则本体零改动。中文展示名 ChatCut口播·马甲实战版,slug/安装不变","fileCount":59,"zipByteSize":100845},{"version":"1.2.2","createdAt":"2026-07-23T02:15:44.052Z","changelog":"中文品牌名 + 框架图:展示名定为「ChatCut口播·马甲实战版」(slug majia-chatcut-koubo 与安装命令不变),新增增量层全景框架图(官方底座→四大件→门禁/词表→验收三象),版本记录收敛≤3","fileCount":59,"zipByteSize":99943},{"version":"1.2.0","createdAt":"2026-07-22T07:15:13.531Z","changelog":"v1.2.0 块级动效词汇表:进场/出场/循环强调三轴受限枚举(弹入默认禁/闪烁禁)+8 主题动效档+块×动效推荐表","fileCount":58,"zipByteSize":96309},{"version":"1.1.0","createdAt":"2026-07-22T04:26:25.542Z","changelog":"v1.1.0 主题 playbook 化:8 套主题各配代理 playbook(token 档位/版式/字幕底板硬规则/调用 crib)+十类信息块选用表,主题包升级为代理可执行的设计系统","fileCount":58,"zipByteSize":93543}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171vv4g1xczzsxtgd1wg0626x83khts:majia-chatcut-koubo","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"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-maojiebc-majia-chatcut-koubo/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-maojiebc-majia-chatcut-koubo/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-maojiebc-majia-chatcut-koubo/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-maojiebc-majia-chatcut-koubo/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-maojiebc-majia-chatcut-koubo/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-maojiebc-majia-chatcut-koubo/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-11T07:43:54.741Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-maojiebc-majia-chatcut-koubo/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-maojiebc-majia-chatcut-koubo/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-maojiebc-majia-chatcut-koubo/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-maojiebc-majia-chatcut-koubo/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":"high","updatedAt":"2026-10-11T04:38:50.200Z","emptyReason":null},"readme":"Skill: ChatCut口播 · 马甲实战版\n\nOwner: maojiebc\n\nSummary: 编排 ChatCut 官方能力，稳妥完成口播样片、整片扩展与验证\n\nTags: agent-skills:1.7.0, ai-agent:1.7.0, captions:1.7.0, chatcut:1.7.0, claude-code:1.7.0, codex:1.7.0, latest:1.7.0, talking-head:1.7.0, video-editing:1.7.0\n\nVersion history:\n\nv1.7.0 | 2026-09-30T10:02:05.062Z | user\n\n新增网页与桌面环境检查、字幕/转写/剪切/原声替换分流，避免只改字幕却重剪；原声替换单独审批，官方更新可追溯。离线检查通过，真实 ChatCut 写入、画面与人耳试听仍为 UNVERIFIED。\n\nv1.6.0 | 2026-08-11T02:09:42.481Z | user\n\n新增一句话稳剪、run/status/resume/report 主流程、样片审批与可恢复执行；离线编排和恢复验证通过，真实 ChatCut 写入/渲染/听审 canary 仍为 UNVERIFIED，stableClaimEligible=false。\n\nv1.4.0 | 2026-07-24T13:37:11.150Z | user\n\n可验证生产系统：新增 Rule Registry、Creator OS IR/SRT、可解释规划、审批、可恢复执行/证据、Media QA、交付与反馈治理；真实 adapter/发布保持 unverified 且不自动执行。\n\nv1.3.0 | 2026-07-23T18:06:48.337Z | user\n\nv1.3.0 制度增量+ChatCut宿主实测档案+本地个人层:新增确认闸门(状态表先行硬闸/60秒预览闸/精校稿真相源/验收单元=完整成片体验);references 6→10册(chatcut-field-notes宿主实测档案/operating-manual八道硬闸/retention-structure四平台路由/recovery故障恢复);机器门禁policy.json不可放宽+validator升级(--terms个人词表/繁体/毫秒短卡);七执行状态+双素材呼吸感+窗口reframe shader路线;主题token对比度修正(海盐青7.67:1);本地个人层~/.config千人千面机制\n\nv1.2.3 | 2026-07-23T03:34:46.455Z | user\n\n依赖 CVE 修复:CairoSVG>=2.7 固定为 ==2.9.0 消除 CVE-2026-31899(递归<use>指数级DoS);SKILL description 补前置/非目标收窄trigger;规则本体零改动。中文展示名 ChatCut口播·马甲实战版,slug/安装不变\n\nv1.2.2 | 2026-07-23T02:15:44.052Z | user\n\n中文品牌名 + 框架图:展示名定为「ChatCut口播·马甲实战版」(slug majia-chatcut-koubo 与安装命令不变),新增增量层全景框架图(官方底座→四大件→门禁/词表→验收三象),版本记录收敛≤3\n\nv1.2.0 | 2026-07-22T07:15:13.531Z | user\n\nv1.2.0 块级动效词汇表:进场/出场/循环强调三轴受限枚举(弹入默认禁/闪烁禁)+8 主题动效档+块×动效推荐表\n\nv1.1.0 | 2026-07-22T04:26:25.542Z | user\n\nv1.1.0 主题 playbook 化:8 套主题各配代理 playbook(token 档位/版式/字幕底板硬规则/调用 crib)+十类信息块选用表,主题包升级为代理可执行的设计系统\n\nv1.0.0 | 2026-07-22T04:08:14.524Z | user\n\nv1.0.0 首发:ChatCut 口播剪辑通用技巧包——双画面版式(8套坐标)/8主题配色/过渡动效工程/人脸取景数学/可自维护词表与字幕机器门禁,官方 skill 之上的增量层\n\nArchive index:\n\nArchive v1.7.0: 291 files, 2794823 bytes\n\nFiles: 01-从这里开始/README.md (3828b), 02-剪辑方法手册/01-逐片执行手册.md (12506b), 02-剪辑方法手册/02-双画面版式.md (8635b), 02-剪辑方法手册/03-主题配色.md (6801b), 02-剪辑方法手册/04-信息块与画面任务.md (5453b), 02-剪辑方法手册/05-过渡动效.md (7453b), 02-剪辑方法手册/06-人脸取景与三层合成.md (7944b), 02-剪辑方法手册/07-字幕与术语.md (11034b), 02-剪辑方法手册/08-留存结构与平台路由.md (7572b), 02-剪辑方法手册/09-ChatCut宿主实测.md (10593b), 02-剪辑方法手册/10-故障恢复.md (4528b), 02-剪辑方法手册/11-外挂知识包与镜头配方.md (7274b), 02-剪辑方法手册/README.md (1733b), 03-实操迭代与踩坑/README.md (3598b), 03-实操迭代与踩坑/案例/2026-07-24-AI-Hero母片精修.md (44561b), 03-实操迭代与踩坑/迭代记录.md (26211b), 04-项目设计与路线图/2026-09-30官方更新与v1.7设计.md (3543b), 04-项目设计与路线图/AI剪辑规则吸收记录.md (4115b), 04-项目设计与路线图/README.md (1506b), 04-项目设计与路线图/V1.3.1迁移指南.md (8441b), 04-项目设计与路线图/主题预览.png (1370361b), 04-项目设计与路线图/公开路线图.md (24009b), 04-项目设计与路线图/契约基线.md (3901b), 04-项目设计与路线图/系统架构.png (899368b), 04-项目设计与路线图/系统架构.svg (9029b), AGENTS.md (3183b), agents/openai.yaml (578b), assets/compositions.json (7164b), assets/theme-kit/AGENTS.md (1429b), assets/theme-kit/assets/backgrounds/01-deep-space-blue.svg (1779b), assets/theme-kit/assets/backgrounds/02-emerald-gold.svg (1625b), assets/theme-kit/assets/backgrounds/03-warm-gray-orange.svg (1721b), assets/theme-kit/assets/backgrounds/04-midnight-purple.svg (1626b), assets/theme-kit/assets/backgrounds/05-minimal-black-white.svg (1257b), assets/theme-kit/assets/backgrounds/06-sea-salt-cyan.svg (1573b), assets/theme-kit/assets/backgrounds/07-earth-brown.svg (1379b), assets/theme-kit/assets/backgrounds/08-vitality-lime.svg (1664b), assets/theme-kit/assets/overlays/safe-area.svg (747b), assets/theme-kit/assets/overlays/speaker-placeholder.svg (341b), assets/theme-kit/components/portrait-talk-card.css (12009b), assets/theme-kit/components/portrait-talk-card.html (529b), assets/theme-kit/components/portrait-talk-card.js (6771b), assets/theme-kit/docs/codex-prompt.md (1278b), assets/theme-kit/docs/layout-spec.md (1436b), assets/theme-kit/docs/theme-guide.md (1647b), assets/theme-kit/examples/demo-data.json (435b), assets/theme-kit/examples/PortraitTalkCard.tsx (1358b), assets/theme-kit/examples/single.html (4578b), assets/theme-kit/index.html (4361b), assets/theme-kit/manifest.json (2260b), assets/theme-kit/package.json (279b), assets/theme-kit/playbooks/01-deep-space-blue.md (2542b), assets/theme-kit/playbooks/02-emerald-gold.md (2366b), assets/theme-kit/playbooks/03-warm-gray-orange.md (2373b), assets/theme-kit/playbooks/04-midnight-purple.md (2238b), assets/theme-kit/playbooks/05-minimal-black-white.md (2265b), assets/theme-kit/playbooks/06-sea-salt-cyan.md (2500b), assets/theme-kit/playbooks/07-earth-brown.md (2276b), assets/theme-kit/playbooks/08-vitality-lime.md (2358b), assets/theme-kit/README.md (3263b), assets/theme-kit/requirements.txt (16b), assets/theme-kit/scripts/check-contrast.mjs (2008b), assets/theme-kit/scripts/render-backgrounds.py (406b), assets/theme-kit/tokens/layouts.json (8785b), assets/theme-kit/tokens/themes.css (5272b), assets/theme-kit/tokens/themes.json (13963b), assets/theme-kit/tokens/themes.schema.json (8312b), assets/theme-kit/tokens/themes.ts (15023b), CHANGELOG.md (27788b), extensions/cuttips-kb/data/categories.json (2409b), extensions/cuttips-kb/data/knowledge-items.json (53968b), extensions/cuttips-kb/data/rules.json (10903b), extensions/cuttips-kb/data/sources.json (134854b), extensions/cuttips-kb/data/stats.json (610b), extensions/cuttips-kb/manifest.json (1367b), extensions/cuttips-kb/scripts/query.mjs (4435b), extensions/registry.json (556b), extensions/video-shotcraft/allowlist.json (3611b), extensions/video-shotcraft/manifest.json (939b), extensions/video-shotcraft/scripts/inspect-provider.mjs (2569b)\n\nFile v1.7.0:SKILL.md\n\n---\nname: majia-chatcut-koubo\ndescription: ChatCut 口播与录屏视频的一句话编排和安全默认层。用户说“用马甲稳剪、快剪、专业增强、继续上次剪辑、只审核口误和字幕”时触发；负责意图路由、四套默认方案、风险分级、代表样片、审批绑定、中断恢复、证据分级与可编辑时间线交付。项目操作与工具参数始终交给 ChatCut 官方 Skill。默认不重排观点，不添加音乐、动态图形、补充画面或生成素材，不导出、不发布。真实 ChatCut 端到端只有当前匿名样本和工具证据齐全时才能宣称通过。\nlicense: MIT\nmetadata:\n  version: 1.7.0\n---\n\n# ChatCut口播 · 马甲实战版\n\n你是官方 ChatCut 能力之上的轻量流程助手。让普通创作者用一句话进入安全、可恢复、可审阅的口播流程，不要先展示全部高级知识。\n\n## 功能架构\n\n从当前会话检查、代表样片到可继续编辑的时间线，按阶段回读并保存进度：\n\n![v1.7.0 口播流程](https://raw.githubusercontent.com/maojiebc/majia-chatcut-koubo/main/04-项目设计与路线图/系统架构.png)\n\n## 用户合同\n\n用户说“用马甲稳剪”时：\n\n1. 检查当前 ChatCut 会话、项目、时间线和素材。\n2. 只自动处理有证据的低风险口误、失败重说和批准范围内的长停顿。\n3. 先做代表样片；用户确认后才扩展整片。\n4. 先锁定 A-roll，再做声音平滑和基础字幕。\n5. 分开验证结构、画面、音频测量、人耳试听、隐私和用户确认。\n6. 默认交付可继续编辑的 ChatCut 时间线和自然语言报告。\n\n默认不重排观点，不删除整句/数字/专名/否定附近内容，不加音乐/动态图形/补充画面/生成素材，不覆盖手工修改，不导出，不发布用户视频。\n\n## 与官方 Skill 的边界\n\n工具怎么调用、参数叫什么、产品当前支持什么，一律以当前 ChatCut 官方 Skill 和工具说明为准。本 Skill 只补流程衔接、安全默认、风险与审批、恢复和交付报告。\n\n任何非机械小修，按任务加载：\n\n| 阶段或信号 | 官方 Skill |\n| --- | --- |\n| 项目定位与编辑器交接 | `chatcut-plugin-basics` |\n| 口播清理方法 | `talking-head-guide` |\n| 转写和字幕 | `transcription` |\n| 结构与合成画面验证 | `verification` |\n| 导入素材 / 多机位 | `asset-import` / `multicam-sync` |\n| 音乐 / 动态图形获批 | `music` / `create-motion-graphics` |\n| 特殊画面 / 生成视频 / 语音获批 | `shader-gen` / `video-gen` / `voice` |\n| 导出获批 / 已知故障 | `export` / `known-errors` |\n| 产品问题 / 一次性询问 | `product-help` / `widget-forms` |\n\n完整分工见 [官方能力分工](workflows/official-skill-map.md)。禁止长期复制官方参数或内部对象获取方法。\n\n## v1.7 环境与文字保护\n\n先确定当前项目是 Hosted/Web 还是 Desktop。Hosted 读取对应官方 Skills；Desktop 使用签名应用同步或托管助手的当前指令，不强制加载 Hosted 教程，也不静默换环境。工具缺失时按当前环境指引处理；本包不自行安装或重配另一环境。\n\n每次会话和工具定义变化后重新读取能力。可用 `npm run preflight -- --session <current-session.json> --json` 检查声明的来源、能力和时效；没有观察记录、缺能力、过期、环境不匹配或模拟记录不得作为写入准入。该命令只检查提供的合同，不证明已连接账号或已验证真实媒体。\n\n文字修改先确定对象：只改字幕走字幕卡/程序；原声正确但 ASR 听错只修源转写；删口播内容走 Script；实际说错才考虑原声替换。只改字幕和只修转写关闭默认口播清理与音频平滑，不顺带重剪。模糊或混合请求先澄清。\n\n局部原声替换始终高风险。确认精确文字与区域、说话人声音和克隆权限后才允许生成；保留原画面和后续时序，单独试听修复窗口。样片批准不能替代这项审批。\n\n字幕重分段会改变卡片身份。完成一个阶段后重新读取卡片、修订号和翻译覆盖，再进行下一批；旧卡片引用和旧样片证据不得复用。历史词级 override 与一帧 guard 保留为旧故障候选，不作为新版默认方法。\n\n完整流程见 [环境与文字修改](workflows/session-and-text-safety.md)。维护时先读 [官方来源快照](reports/official-source-current.json)，再用 `npm run check:official -- --checkout <official-checkout>` 比较已审查内容；源码快照不能覆盖当次工具 schema。\n\n## 识别意图\n\n- `run + stable`：马甲稳剪、一键稳剪、剪干净、处理口误停顿和字幕。\n- `run + fast`：快剪、短口播、尽快出样片。\n- `run + pro`：专业增强、录屏演示、双画面或明确高级处理。\n- `review`：只审核、先不要改、只看口误和字幕方案。\n- `resume`：继续上次、恢复、接着剪。\n\n无法确认时使用 `stable`，不要把模糊需求解释成更大授权。先自动读取当前项目、时间线和素材；只有无法唯一绑定时才问一个聚焦问题。若还缺多个创作字段，一次性询问最多五项：目标、节奏、目标时长/平台、字幕偏好、录屏/隐私/必须保留内容。不要让用户重复提供工具已经能读到的信息。\n\n可直接使用以下路线：\n\n- [一句话稳剪](workflows/one-click-stable.md)\n- [快剪](workflows/fast-cut.md)\n- [专业增强](workflows/pro-enhance.md)\n- [继续未完成剪辑](workflows/resume.md)\n\n## 选择默认方案\n\n| 条件 | 方案 | 默认特点 |\n| --- | --- | --- |\n| 普通口播 | `balanced-stable` | 原顺序、自然节奏、A-roll 单画面 |\n| 30–90 秒快剪 | `tight-short` | 更紧，但重排仍需确认 |\n| 5–30 分钟长片 | `trust-longform` | 保护案例、数字和论证链 |\n| 录屏 + 人物 | `screen-demo` | 屏幕证据优先，隐私必须验证 |\n\n机器合同在 [`profiles/`](profiles/)。个人偏好只能保持或收紧安全规则。除非用户明确说“学一下”，不要把一次反馈写成长期偏好；即使明确要求，也只生成候选差异，先展示再保存。\n\n## 运行清单\n\n每次任务创建稳定、匿名的 `runId`，记录阶段/状态、项目与时间线逻辑引用、时间线版本、方案指纹、素材清单、审批、检查点、最近安全动作、失败计数和当前能力证据。\n\n运行记录默认放在项目内 `.majia-koubo/`，不得进入公开仓或最终交付物。公开报告禁止真实项目/素材 ID、签名链接、本机绝对路径、字幕全文和私有词表。\n\n## 阶段状态机\n\n```text\npreflight\n→ brief_ready\n→ project_ready\n→ transcript_ready\n→ edit_plan_ready\n→ sample_ready\n→ sample_approved\n→ full_aroll_applied\n→ captions_audio_ready\n→ enhancements_ready（仅获批）\n→ verified\n→ review_ready\n→ exported（仅获批）\n```\n\n样片要求修改时进入 `revision_requested`，回到 `edit_plan_ready`。`blocked` 是状态：保留最近安全阶段和检查点，恢复前先对账，必要时才重做前置检查。默认终点是 `review_ready`；没有导出审批不得进入 `exported`。\n\n## 风险决定\n\n每项决定记录原话、处理结果、类型、风险、理由、证据、状态和审批引用。\n\n低风险（有证据可自动）：纯静音头尾；无语义迟疑音；词头卡壳后接完整词；没有新信息的紧邻失败重启；批准范围内的长停顿；可验证重复对白轨静音；幂等声音平滑。\n\n中风险（进样片/清单）：口头连接词；自然气口和短停顿；有细微信息差的相似表达；句内局部重说；不完整短语；字幕断句/标点/显示改写；问候、自我介绍和背景铺垫。\n\n高风险（必须明确批准）：整句/长段删除；数字、案例、专名、否定附近内容；重排/钩子前置/多 Take；超范围压缩；人物裁切/画面重构；隐私不确定；删除已确认元素；生成内容；导出与发布。\n\n高风险无审批引用时禁止应用；中风险无样片确认时禁止扩展整片。\n\n## 代表样片\n\n- ≤3 分钟：开头 20–30 秒 + 最复杂切点。\n- 3–10 分钟：开头 45–60 秒 + 最复杂窗口。\n- >10 分钟：开头 60 秒 + 最复杂状态 + 隐私高风险段 + 片尾。\n\n尽量覆盖重说、停顿和开头体验；录屏再覆盖隐私/人物窗，长片再覆盖结尾。样片字幕只作局部临时预览，正式全片字幕必须在 A-roll 锁定后生成。\n\n样片批准绑定计划、风格、版式、字幕、时间线版本和样片窗口六维指纹。批准范围必须精确覆盖当前样片；任一变化，旧批准和依赖证据都标记 `STALE`。向用户展示自然语言卡片，不暴露内部 item、segment、host 或检查点标识。\n\n## 写入与恢复纪律\n\n每批写入前回读项目、时间线版本和目标对象，检查前置条件/幂等键/当前审批，只写一个小批次。写后回读并比较计划与实际，保存证据和检查点后再继续。\n\n- 写入前超时：确认未写，再重试。\n- 写入后超时：确认已写，不重复创建。\n- 部分或含糊结果：补偿或阻断，不能猜。\n- 用户手工修改：停止覆盖，让旧审批失效。\n- 同一失败签名三次：止损，返回最近安全版本和交接报告。\n\n恢复不得扩大原授权，详见 [继续未完成剪辑](workflows/resume.md)。\n\n## A-roll、声音与字幕顺序\n\n```text\n转写与术语保护\n→ A-roll 决定\n→ 代表样片与批准\n→ 整片 A-roll\n→ 单一对白主轨与声音衔接\n→ 整片字幕\n→ 可选增强\n→ 验证\n```\n\n字幕以真实语音和用户精校稿为真相源，保护数字、小数点、百分号、单位、日期、专名和否定。不要用固定字数代替语义断句；字符预算只做最后画面安全检查。结构页、合成画面和最终文件字幕是不同证据面。\n\n## 画面默认\n\n普通稳剪只用 `A`（人物/主口播）、`B`（屏幕证据优先）、`S`（必要的屏幕+人物）。优先级：隐私 > 屏幕证据 > 人物 > 理解任务 > 字幕 > 新鲜感。\n\n七执行状态、主题、过渡、人脸取景和外部镜头候选只在专业增强按需读取。不要为了“看起来剪过”机械切镜。\n\n## 验证与完成声明\n\n机器记录（JSON）用小写，用户报告显示大写：`pass / fail / unverified / stale / waived / not_applicable / pending`。\n\n| 证据 | 能证明 | 不能证明 |\n| --- | --- | --- |\n| 项目/时间线回读 | 结构已写入 | 像素正确 |\n| 合成帧 | 代表画面正确 | 编辑器已同步 |\n| 音频测量 | 数值和文件属性 | 人耳自然 |\n| 人类播放 | 覆盖窗口的体验 | 未覆盖窗口也通过 |\n| 样片批准 | 当前策略可扩展 | 最终整片已批准 |\n\n不能看就写 `UNVERIFIED`，不能听也写 `UNVERIFIED`；任何版本或指纹漂移让旧证据变为 `STALE`。\n\n## 与用户沟通和交付\n\n一次任务最多主动发送五次里程碑：项目与策略确认、转写与决定完成、代表样片待确认、整片按批准扩展、时间线可审阅。\n\n最终报告分成：已完成；为保护内容而未执行；分项验证；仍需留意；下一步。不要用内部 ID、哈希或错误堆砌给普通用户。\n\n跨会话命令：\n\n```bash\nnpm run run -- --intent \"用马甲稳剪当前口播\" --dry-run --json\nnpm run status -- --run-id <run-id>\nnpm run review -- --run-id <run-id>\nnpm run approve-decisions -- --run-id <run-id> --decision-id <decision-id>\nnpm run approve-sample -- --run-id <run-id>\nnpm run request-revision -- --run-id <run-id> --direction natural\nnpm run resume -- --run-id <run-id> --timeline-revision <fresh-revision> \\\n  --reconcile-outcome <blocker-specific-outcome> \\\n  --evidence-ref <logical:readback-evidence> [--checkpoint-id <checkpoint-id>]\nnpm run report -- --run-id <run-id>\n```\n\n这些命令记录计划和状态，不会假装已经修改真实 ChatCut 项目。`resume` 必须使用刚回读的时间线版本；阻断运行还必须提供与阻断原因匹配的对账证据，写入类阻断需要已落盘检查点。\n\n## 当前真实环境边界\n\nv1.7.0 的数据合同、风险规则、状态转换、匿名模拟会话和本地命令已通过自动检查。模拟证据以 `provenance=simulation` 明示，不能升级真实声明。仓库真实验证报告当前为 `stableClaimEligible=false`；真实项目写入、合成画面、人耳试听和匿名生产样本仍为 `UNVERIFIED`。\n\n因此可以说“离线流程和恢复模拟已验证”，不得说“一键稳定剪辑已经生产验证”，不得把模拟场景写成真实案例，也不得把旧版本证据外推到当前工具面。\n\n## 实战经验库硬闸\n\n更新本 Skill 或处理命中标签的真实任务前：\n\n1. 完整读取 [`03-实操迭代与踩坑/README.md`](03-实操迭代与踩坑/README.md)。\n2. 完整读取命中案例，不只读摘要。\n3. 在 [`03-实操迭代与踩坑/迭代记录.md`](03-实操迭代与踩坑/迭代记录.md) 追加采用、拒绝、证据缺口、新 canary 和验证回执。\n4. 一次事故不直接晋升全局规则；至少需要独立复验、反例和回滚动作。\n5. 公开仓只写脱敏事实。\n\n稳定方法按需读取 [`02-剪辑方法手册/`](02-剪辑方法手册/README.md)。高级机器门禁由 `rules/`、`schemas/`、`src/`、`scripts/`、`fixtures/` 与 `tests/` 维护。\n\n## 版本记录\n\n- **v1.7.0（2026-09-30）**：环境准入、文字目标保护、原声替换审批、官方来源与漂移检查；真实端到端仍为 `UNVERIFIED`。\n- **v1.6.0（2026-08-11）**：一句话入口、三模式四方案、运行清单、风险决定、代表样片、审批/改样、证据分离恢复与交付主命令；真实端到端仍为 `UNVERIFIED`。\n- **v1.5.0（2026-07-25）**：受治理的可选知识与镜头候选层。\n\n完整历史见 [CHANGELOG.md](CHANGELOG.md)。\n\n## 作者 / 联系\n\n**马甲（@maojiebc）** · 超级马甲\n\n- Email：[m9224@163.com](mailto:m9224@163.com)\n- GitHub：[github.com/maojiebc](https://github.com/maojiebc)\n- ClawHub：[clawhub.ai/p/maojiebc](https://clawhub.ai/p/maojiebc)\n- X：[@maojiebc](https://x.com/maojiebc)\n- 小红书：[超级马甲](https://xhslink.com/m/4fQMJeHHWKC)\n- 微信公众号：[超级马甲](https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzY5NzIzODk2NA==#wechat_redirect)\n\n> 这份 Skill 来自 14 年用户运营、数据与内容生产实践。\n\nFile v1.7.0:01-从这里开始/README.md\n\n# 从这里开始\n\n这个目录是给维护者看的，不要求先懂代码。\n\n## 我现在想做什么\n\n| 你的目的 | 去哪里 | 怎么维护 |\n| --- | --- | --- |\n| 记录一次真实剪辑里新踩的坑 | [实操迭代与踩坑](../03-实操迭代与踩坑/README.md) | 先追加案例，再在迭代记录里写这次采用了什么 |\n| 查字幕、转场、双画面、人脸取景怎么做 | [剪辑方法手册](../02-剪辑方法手册/README.md) | 找对应主题；只有跨案例验证过的经验才写进这里 |\n| 看项目为什么这样设计、下一步做什么 | [项目设计与路线图](../04-项目设计与路线图/README.md) | 维护路线图、架构、迁移说明和规则吸收记录 |\n| 修改主题颜色或版式坐标 | `assets/` | 这是半人工、半程序区，修改后必须运行全量验证 |\n| 修改机器必须遵守的硬规则 | `rules/` | 同时补 schema、正反 fixture 和测试，不直接手改一句就结束 |\n| 修改安装后 Agent 的总行为 | `SKILL.md` | 先读实操案例；修改后检查所有链接和版本面 |\n| 修改一句话入口或主流程 | `agents/`、`workflows/`、`src/orchestration/` | 同步入口路由、状态、风险、样片、恢复和交付测试 |\n| 修改稳剪/快剪/长片/录屏默认值 | `profiles/` | 默认只能保持或收紧安全边界，并更新匿名正反例 |\n| 修改跨会话状态和报告 | `schemas/runtime/`、`templates/runtime/` | 同步 Schema、模板、CLI、故障场景和兼容检查 |\n| 发布一批正式更新 | `CHANGELOG.md`、`package.json` | 经验积累不等于发版；达到一批后再统一升级版本 |\n\n## 四个中文维护区\n\n1. `01-从这里开始/`：人类入口和维护地图。\n2. `02-剪辑方法手册/`：已经相对稳定、下次可以直接复用的方法。\n3. `03-实操迭代与踩坑/`：真实案例、失败路径、ChatCut 产品问题和迭代回执。\n4. `04-项目设计与路线图/`：架构、路线图、迁移说明和规则吸收记录。\n\n## 英文目录是什么\n\n这些目录主要给程序、测试和安装工具使用。平时阅读仓库时可以先忽略：\n\n| 目录 | 用途 | 普通维护是否常改 |\n| --- | --- | --- |\n| `src/` | 核心程序实现 | 否 |\n| `scripts/` | 校验和命令行工具 | 否 |\n| `schemas/` | JSON 数据合同 | 否 |\n| `fixtures/` | 测试用匿名样例 | 否 |\n| `tests/` | 自动化回归测试 | 否 |\n| `templates/` | 给用户复制的模板 | 偶尔 |\n| `agents/` | 安装后的默认一句话入口 | 偶尔 |\n| `workflows/` | 稳剪、快剪、专业增强和恢复说明 | 偶尔 |\n| `profiles/` | 四套可复现剪辑默认方案 | 谨慎 |\n| `assets/` | 版式、主题和视觉资产 | 按需 |\n| `rules/` | 机器硬规则 | 谨慎 |\n\n## 最常用的维护流程\n\n```text\n真实任务出现问题\n  ↓\n写入 03-实操迭代与踩坑\n  ↓\n在不同任务中重复验证\n  ↓\n晋升到 02-剪辑方法手册\n  ↓\n可以机器判定时，再进入 rules + fixtures + tests\n  ↓\n积累到一批后统一发正式版本\n```\n\n原则只有一句：案例先积累，方法后晋升，硬规则最后机器化。\n\n## V1.7 主流程改动后的最小检查\n\n```bash\nnpm run validate:runtime-contracts\nnpm run test:orchestration\nnpm run test:risk-policy\nnpm run test:run-state\nnpm run test:starter-prompts\nnpm run smoke:one-click:fake\nnpm run validate:docs-routing\nnpm run verify\n```\n\n真实 ChatCut 验证结果单独写入 `reports/live-canary-v1.7.0.json`。匿名模拟通过不能把真实状态从 `UNVERIFIED` 改为通过。\n\n官方适配维护先读 [环境与文字修改](../workflows/session-and-text-safety.md) 和 [本轮来源与设计](../04-项目设计与路线图/2026-09-30官方更新与v1.7设计.md)，运行 `npm run test:compatibility` 与 `npm run check:official`。\n\nFile v1.7.0:02-剪辑方法手册/README.md\n\n# 剪辑方法手册\n\n这里保存已经经过复验、下一次任务可以直接读取的方法。真实事故和未决问题放在 [实操迭代与踩坑](../03-实操迭代与踩坑/README.md)，不要混写。\n\n## 按问题找手册\n\n| 遇到的问题 | 读取 |\n| --- | --- |\n| 不知道整片应该按什么顺序做 | [01-逐片执行手册](01-逐片执行手册.md) |\n| 人物、录屏、圆窗和分栏怎么排 | [02-双画面版式](02-双画面版式.md) |\n| 字幕底板、品牌色、图表色怎么选 | [03-主题配色](03-主题配色.md) |\n| 要不要加标题卡、步骤卡、关键词强调 | [04-信息块与画面任务](04-信息块与画面任务.md) |\n| 转场生硬、闪黑、节奏太快 | [05-过渡动效](05-过渡动效.md) |\n| 人脸不居中、圆窗拉伸、出现黑边 | [06-人脸取景与三层合成](06-人脸取景与三层合成.md) |\n| 字幕错词、断句、长字幕、词表 | [07-字幕与术语](07-字幕与术语.md) |\n| 开头不抓人、中段拖、平台节奏不同 | [08-留存结构与平台路由](08-留存结构与平台路由.md) |\n| ChatCut 编辑器、云端渲染、分页引擎有差异 | [09-ChatCut宿主实测](09-ChatCut宿主实测.md) |\n| 连接失败、转写卡住、任务接力恢复 | [10-故障恢复](10-故障恢复.md) |\n| 查 198 份剪辑百科，或调用外部 Remotion 镜头配方 | [11-外挂知识包与镜头配方](11-外挂知识包与镜头配方.md) |\n\n## 维护原则\n\n- 单次事故先写案例，不直接升级为通用方法。\n- 至少经过重复实例和 E2/E3 证据，再晋升到本目录。\n- 方法要写适用范围、反例和失败后的回滚动作。\n- 能机器判定的稳定方法，才进一步进入 `rules/`。\n\nFile v1.7.0:03-实操迭代与踩坑/README.md\n\n# 实战经验库\n\n这个目录保存真实 ChatCut 生产任务中出现的事实、失败链、产品问题、绕行方案和证据。它不是正式规则的堆放区，也不是只写成功经验的“战报”。\n\n目标是解决两个问题：\n\n1. 不用每出现一个新坑就发布新的 Skill 正式版本。\n2. 下一次迭代不能从零开始，必须读取旧案例，并留下“读过以后做了什么决定”的记录。\n\n## 目录契约\n\n```text\n03-实操迭代与踩坑/\n  README.md\n  迭代记录.md\n  案例/\n    YYYY-MM-DD-<案例名称>.md\n```\n\n- `案例/`：追加式原始案例。保留时间线、尝试、失败、修复、验证和未决问题。\n- `迭代记录.md`：每次 Skill 迭代或命中案例标签的生产任务的读取回执。\n- `02-剪辑方法手册/`：从多个案例中晋升出的稳定做法。\n- `rules/`：可机器执行、带反例和回滚条件的 hard policy。\n\n## 开工读取协议\n\n真实 ChatCut 任务或 Skill 迭代开始时：\n\n1. 读取本文件。\n2. 按 frontmatter 的 `tags`、`chatcut_surfaces`、`failure_signatures` 找到相关案例。\n3. 完整读取案例，不能只读执行摘要。\n4. 把读取结果写入 `迭代记录.md`：\n   - 读取了哪些案例；\n   - 哪些结论本次采用；\n   - 哪些结论因版本、证据或任务差异被拒绝；\n   - 新增了什么 canary；\n   - 哪些结论有资格晋升。\n\n## 收工写入协议\n\n任务结束时：\n\n1. 新事实优先追加到已有案例；不同根因或不同产品面才新建案例。\n2. 记录实际结果，不把计划写成结果。\n3. 区分证据等级：\n   - `E0`：推测或代理内部判断，没有用户/像素/回读证据。\n   - `E1`：结构回读、工具返回、DOM/日志。\n   - `E2`：用户在编辑器的可见观察，或本地源文件抽帧/试听。\n   - `E3`：ChatCut 合成帧、最终导出文件、可复算媒体指标。\n4. 记录 `expected / actual / impact / workaround / requested_fix`，让产品经理和开发可直接转为 issue。\n5. 记录证据缺口。没有保存编辑器截图时，要明确写“用户观察，未留像素附件”，不能冒充 E3。\n\n## 规则晋升\n\n一条案例结论进入 `02-剪辑方法手册/` 至少满足：\n\n- 两个独立案例，或同一问题在不同资产/实例上重复；\n- 有 E2/E3 证据；\n- 有适用范围和反例；\n- 有失败时的回滚动作；\n- 不与官方 ChatCut skill 和当前工具 schema 冲突。\n\n进入 `rules/` 还必须：\n\n- 可机器判定；\n- 有正/反 fixture；\n- 有稳定 rule ID；\n- 有 owner、回滚和版本漂移策略。\n\n## 修订与纠错\n\n- 案例原则上不覆盖旧结论。\n- 事实错误可原位修复，但必须在“修订记录”说明原因。\n- 产品版本变化使旧结论失效时，新增 `supersedes` 案例，并在旧案例顶部链接新案例。\n- 不删除仍有历史解释价值的失败路径。\n\n## 公开仓脱敏\n\n禁止提交：\n\n- ChatCut 项目 ID、资产 ID、签名 URL、短期导入 token；\n- 用户本机绝对路径；\n- 原始字幕全文、人物画面和私有截图；\n- 品牌私词表、真实业务敏感数字；\n- OAuth、API key、邮箱、手机号等标识。\n\n允许提交：\n\n- 匿名化帧数、时长、轨道角色和 source offset；\n- 错误字符串、工具行为、验证流程；\n- 脱敏标题和通用 ASR 错误模式；\n- 对 ChatCut 产品团队有复现价值的 expected/actual。\n\n## 第一个案例\n\n- [AI Hero 母片精修：编辑器黑底、云端帧正常与真实 Hyperframes 替换](案例/2026-07-24-AI-Hero母片精修.md)\n\nFile v1.7.0:04-项目设计与路线图/README.md\n\n# 项目设计与路线图\n\n这里解释项目为什么这样设计，以及后续准备往哪里走。\n\n| 内容 | 文件 |\n| --- | --- |\n| V1.6 一句话稳剪主流程、四套默认方案和安全护栏 | [系统架构](系统架构.svg) |\n| 8 套口播主题视觉总览 | [主题预览](主题预览.png) |\n| 当前合同和 fail-closed 基线 | [契约基线](https://github.com/maojiebc/majia-chatcut-koubo/blob/main/04-%E9%A1%B9%E7%9B%AE%E8%AE%BE%E8%AE%A1%E4%B8%8E%E8%B7%AF%E7%BA%BF%E5%9B%BE/%E5%A5%91%E7%BA%A6%E5%9F%BA%E7%BA%BF.md) |\n| 老配置如何迁移 | [V1.3.1迁移指南](https://github.com/maojiebc/majia-chatcut-koubo/blob/main/04-%E9%A1%B9%E7%9B%AE%E8%AE%BE%E8%AE%A1%E4%B8%8E%E8%B7%AF%E7%BA%BF%E5%9B%BE/V1.3.1%E8%BF%81%E7%A7%BB%E6%8C%87%E5%8D%97.md) |\n| 外部 AI 剪辑经验如何吸收或拒绝 | [AI剪辑规则吸收记录](https://github.com/maojiebc/majia-chatcut-koubo/blob/main/04-%E9%A1%B9%E7%9B%AE%E8%AE%BE%E8%AE%A1%E4%B8%8E%E8%B7%AF%E7%BA%BF%E5%9B%BE/AI%E5%89%AA%E8%BE%91%E8%A7%84%E5%88%99%E5%90%B8%E6%94%B6%E8%AE%B0%E5%BD%95.md) |\n| 已完成、下一步和研究项 | [公开路线图](公开路线图.md) |\n\n当前路线图把“一句话产品层离线已交付”和“真实 ChatCut 端到端仍为 `UNVERIFIED`”分开记录；不要用匿名模拟结果替代真实写入、合成画面或人耳试听证据。\n\n如果只是记录一次剪辑任务的新问题，请去 [实操迭代与踩坑](../03-实操迭代与踩坑/README.md)，不要写到路线图里。\n\nFile v1.7.0:assets/theme-kit/README.md\n\n# 9:16 口播视频配色与底图系统\n\n这是一套面向 1080 × 1920 竖屏口播内容的设计资产包。8 套配色均已拆成原始色板、语义色、SVG 底图、布局坐标和可运行的 HTML/CSS/JS 组件；PNG 与海报属于本地生成物，不随 source 包预生成。\n\n## 先看什么\n\n1. 直接打开 `index.html`：查看 8 套主题总览。\n2. 打开 `examples/single.html`：切换主题、布局、文案和安全区。\n3. Codex 开始改代码前先读取根目录 `AGENTS.md`。\n4. 颜色以 `tokens/themes.json` 为唯一数据源，布局以 `tokens/layouts.json` 为唯一数据源。\n\n## 快速接入\n\n```html\n<link rel=\"stylesheet\" href=\"tokens/themes.css\">\n<link rel=\"stylesheet\" href=\"components/portrait-talk-card.css\">\n<div id=\"card\"></div>\n<script src=\"components/portrait-talk-card.js\"></script>\n<script>\n  PortraitTalkThemeKit.mount(\"#card\", {\n    theme: \"sea-salt-cyan\",\n    layout: \"fresh-frame\",\n    showSubtitle: true,\n    copy: {\n      title: \"会员不是折扣人群，\\n而是经营资产\",\n      emphasis: \"经营资产\",\n      footer: \"先理解用户，再设计权益\"\n    }\n  });\n</script>\n```\n\n组件画布固定为 1080 × 1920。预览时可以使用 CSS `transform: scale(...)` 缩放，导出时按原尺寸截图或录制。\n\n## 替换口播人物\n\n组件内 `.talk-card__speaker` 是人物安全区。透明背景视频建议加 `is-cutout`：\n\n```html\n<div class=\"talk-card__speaker is-cutout\">\n  <video class=\"talk-card__speaker-media\" src=\"speaker.webm\" autoplay muted loop playsinline></video>\n</div>\n```\n\n普通矩形视频去掉 `is-cutout`，组件会按主题自动加底色、边框和圆角。\n\n## 文件结构\n\n- `AGENTS.md`：给 Codex 的项目级约束。\n- `tokens/themes.json`：8 套主题、原始色板和语义色。\n- `tokens/layouts.json`：8 个布局的 1080 × 1920 坐标。\n- `tokens/themes.css` / `tokens/themes.ts`：前端可直接使用的变量与类型。\n- `assets/backgrounds/*.svg`：可编辑矢量底图。\n- `assets/backgrounds-png/*.png`：运行 `scripts/render-backgrounds.py` 后生成的 1080 × 1920 纯底图（可选，不随 source 包提交）。\n- `assets/demo-posters/*.png`：可选的本地成品预览输出，不是 release 必需资产。\n- `assets/overlays/safe-area.svg`：字幕和底部 UI 保护区参考。\n- `components/portrait-talk-card.*`：无依赖 HTML 组件。\n- `examples/PortraitTalkCard.tsx`：React 示例。\n- `scripts/check-contrast.mjs`：检查关键文字与按钮对比度。\n\n## 主题选择\n\n| 主题 | 适合内容 | 默认布局 |\n|---|---|---|\n| 深空蓝 | 数据、技术、AI、方法论 | 斜切科技 |\n| 墨绿金 | 业务复盘、经营、策略 | 商务分栏 |\n| 暖灰橙 | 干货、培训、日常表达 | 居中编辑 |\n| 午夜紫 | 趋势、创新、产品发布 | 轨道聚焦 |\n| 极简黑白 | 知识卡片、观点、问答 | 极简长栏 |\n| 海盐青 | 用户运营、会员增长、服务 | 清新框景 |\n| 大地棕 | 商业思考、案例、品牌故事 | 大地带状 |\n| 活力青柠 | 活动、会员日、上新传播 | 轻快角落 |\n\n## 校验\n\n```bash\nnode scripts/check-contrast.mjs\npython3 -m http.server 8000\n```\n\n然后访问本地的 `index.html` 和 `examples/single.html`。\n\nFile v1.7.0:README.md\n\n# ChatCut口播 · 马甲实战版\n\n![Skill Version](https://img.shields.io/badge/skill-v1.7.0-blue)\n[![skills.sh](https://skills.sh/b/maojiebc/majia-chatcut-koubo)](https://skills.sh/maojiebc/majia-chatcut-koubo)\n\n**ChatCut口播 · 马甲实战版｜一句话稳剪与可恢复主流程**\n\n> 给普通创作者的一句话入口：先安全清理口播、做代表样片，确认后再扩展整片，最后交回可继续编辑的 ChatCut 时间线。\n\n![v1.7.0 一句话稳剪流程](https://raw.githubusercontent.com/maojiebc/majia-chatcut-koubo/main/04-项目设计与路线图/系统架构.png)\n\n## 30 秒开始\n\n安装后，在支持 Skill 的助手里说：\n\n```text\n$majia-chatcut-koubo 用马甲稳剪当前口播\n```\n\n它会先自动读取当前项目、时间线和素材；只有无法唯一确定时才问一个聚焦问题。随后完成低风险口误清理与代表样片。你确认样片后，它才会把相同策略扩展到整片，并依次处理声音衔接、基础字幕和验证。\n\n默认结果是一个可继续手调的 ChatCut 时间线，不是自动发布的视频文件。\n\n本地开发者也可以查看入口。以下命令面向 GitHub 源码 clone；SkillHub 的轻量分发包会省略测试、fixture 和纯 CI validator，完整验证仍以同一提交的源码仓与 CI 为准：\n\n```bash\nnpm ci\nnpm run doctor\nnpm run koubo -- --help\nnpm run smoke:one-click:fake\n```\n\n## v1.7 环境与文字保护\n\n当前版本先分清 Hosted/Web 与 Desktop，使用对应官方指令；会话未知、过期或缺能力时先补齐。只改字幕或只修识别错误会关闭默认口播清理；实际原声替换需要精确授权，模糊的文字请求先澄清。\n\n开发者可用 `npm run preflight -- --session <current-session.json> --json` 检查当前会话合同，用 `npm run check:official -- --checkout <official-checkout>` 对照官方版本、Skill 清单与已审查内容。两个检查都不能证明真实剪辑效果。详见 [环境与文字修改](workflows/session-and-text-safety.md) 和 [本轮官方来源与设计](https://github.com/maojiebc/majia-chatcut-koubo/blob/main/04-%E9%A1%B9%E7%9B%AE%E8%AE%BE%E8%AE%A1%E4%B8%8E%E8%B7%AF%E7%BA%BF%E5%9B%BE/2026-09-30%E5%AE%98%E6%96%B9%E6%9B%B4%E6%96%B0%E4%B8%8Ev1.7%E8%AE%BE%E8%AE%A1.md)。\n\n## 默认会做什么\n\n- 识别“稳剪、快剪、专业增强、继续上次、只审核”等自然语言意图。\n- 选择四套可复现默认方案之一，并记录本次选择。\n- 保护数字、专名、否定、论证链和用户已经确认的设计。\n- 只自动处理有证据的低风险项；中风险进入样片，高风险必须由你决定。\n- 按片长选择开头、复杂切点、重说、停顿、隐私和片尾代表窗口。\n- 样片确认后，按“小批写入 → 回读 → 检查点”的方式继续。\n- 先锁定 A-roll，再做声音平滑与整片字幕。\n- 分开报告结构、画面、音频测量、人耳试听、隐私和用户确认状态。\n\n## 默认不会做什么\n\n- 不自动重排观点或把钩子搬到前面。\n- 不自动删除整句、数字、专名、否定附近内容。\n- 不自动添加音乐、动态图形、补充画面或生成素材。\n- 不覆盖用户手工修改；时间线变化会让旧样片确认失效。\n- 不把“工具返回成功”写成“画面和声音已经通过”。\n- 不自动导出，更不会自动发布用户视频。\n\n## 三种模式，四套默认方案\n\n| 你怎么说 | 默认方案 | 适合 | 关键边界 |\n| --- | --- | --- | --- |\n| “用马甲稳剪” | `balanced-stable` | 日常单人口播 | 保持原顺序，节奏自然 |\n| “快剪这条短口播” | `tight-short` | 30–90 秒短片 | 更紧，但钩子和重排仍需确认 |\n| “做专业增强” | 按素材选择 | 长片或录屏 | 高级画面只给候选，不擅自执行 |\n| 长片信任表达 | `trust-longform` | 5–30 分钟 | 保护案例、数字和论证链 |\n| 录屏演示 | `screen-demo` | 屏幕 + 人物 | 屏幕证据优先，隐私必须验证 |\n\n四套方案的机器合同位于 [`profiles/`](profiles/)。个人方案只能保持或收紧安全边界，不能放宽高风险审批。\n\n## 你会看到的主流程\n\n```text\n一句话需求\n→ 项目与素材检查\n→ 转写与低/中/高风险决定\n→ 代表样片\n→ 你确认或要求调整\n→ 整片 A-roll\n→ 声音平滑与字幕\n→ 分项验证\n→ 可编辑时间线 + 交付报告\n```\n\n典型样片确认卡只说人话：\n\n```text\n代表样片已做好\n已处理：明显口误、失败重说、批准范围内的长停顿\n已保护：数字、专名、否定和需要你决定的内容点\n未执行：重排、音乐、动态图形、补充画面、导出\n请选择：继续整片 / 再自然一点 / 再紧一点 / 查看高风险项\n```\n\n## 中断后怎么继续\n\n每次运行都有独立清单、决定记录和检查点。恢复前会先比较项目与时间线版本：\n\n- 写入前超时：回读确认没写，再安全重试。\n- 写入后超时：回读确认已经写入，不重复创建。\n- 部分写入：补偿或停在最近检查点，等待核对。\n- 用户手工修改：停止覆盖，旧审批标记为 `STALE`。\n- 同一失败连续三次：止损并交接，不无限重试。\n\n开发者命令：\n\n```bash\nnpm run run -- --intent \"用马甲稳剪当前口播\" --dry-run --json\nnpm run status -- --run-id <run-id>\nnpm run review -- --run-id <run-id>\nnpm run approve-decisions -- --run-id <run-id> --decision-id <decision-id>\nnpm run approve-sample -- --run-id <run-id>\nnpm run request-revision -- --run-id <run-id> --direction natural\nnpm run resume -- --run-id <run-id> --timeline-revision <fresh-revision> \\\n  --reconcile-outcome <blocker-specific-outcome> \\\n  --evidence-ref <logical:readback-evidence> [--checkpoint-id <checkpoint-id>]\nnpm run report -- --run-id <run-id>\n```\n\n`resume` 不会用清单里的旧版本号自证安全：必须先从 ChatCut 重新回读时间线版本；处于阻断状态时，还必须提交与阻断原因匹配的对账结果和证据。写入类阻断需要最近的已落盘检查点。\n\n`doctor` 在源码 clone 中会运行匿名运行时 fixture 审计；在注册表轻量包中会明确返回 `verificationScope=distribution-package` 与 `runtimeContracts.status=not_packaged`，不会伪造一次本地全量测试。\n\n项目运行记录默认放在项目内 `.majia-koubo/`，已被 Git 忽略，不会进入公开包。\n\n## 完成状态不是一个总勾\n\n交付报告分别使用以下状态：\n\n- `PASS`：有对应证据并通过。\n- `FAIL`：有证据且未通过。\n- `UNVERIFIED`：当前没有足够证据。\n- `STALE`：证据对应的时间线或方案已经变化。\n- `WAIVED`：用户明确豁免。\n- `NOT_APPLICABLE`：本次不适用。\n\n结构回读只能证明结构；合成帧才能证明画面；音频测量不能替代人耳试听；样片确认也不能替代最终播放确认。\n\n## 当前验证边界\n\n| 能力 | v1.7.0 状态 |\n| --- | --- |\n| 运行合同、四套方案、风险规则、状态转换 | `PASS`（离线自动检查） |\n| 超时前/后、部分写入、手工修改保护 | `PASS`（带结构化模拟证据的匿名会话） |\n| 一句话路由与本地命令 | `PASS`（离线自动检查） |\n| 真实 ChatCut 工具面与项目写入 | `UNVERIFIED` |\n| 真实合成画面、人耳试听、匿名生产样本 | `UNVERIFIED` |\n\n本仓库当前没有可用的真实 ChatCut 会话和匿名媒体，因此 [`reports/live-canary-v1.7.0.json`](reports/live-canary-v1.7.0.json) 如实记录为 `stableClaimEligible=false`。离线模拟不能替代真实端到端证据；在至少 5 条真实匿名样本、三种长度、三种内容形态和恢复/手改保护全部通过前，本项目不会把“一键稳定剪辑已经生产验证”写成事实。\n\n## 与 ChatCut 官方能力怎么分工\n\nChatCut 当前官方 Skills 负责项目操作、素材导入、转写、口播基础方法、验证、音乐、动效、生成、导出和产品帮助。本包不复制它们的参数教程，只负责：\n\n- 把一句话需求拆成可恢复的阶段；\n- 给出安全默认、风险边界和样片策略；\n- 保护用户已经确认的内容与设计；\n- 把不同证据分开记录并形成交付报告。\n\n完整分工见 [`workflows/official-skill-map.md`](workflows/official-skill-map.md)。官方工具名称和参数始终以当前 ChatCut 工具说明为准。\n\n## 安装\n\n```bash\n# GitHub CLI\ngh skill install maojiebc/majia-chatcut-koubo\n\n# skills.sh\nnpx skills add maojiebc/majia-chatcut-koubo\n\n# ClawHub\nnpx clawhub install majia-chatcut-koubo\n```\n\n安装标识始终是 `majia-chatcut-koubo`，展示名是“ChatCut口播 · 马甲实战版”。\n\n## 开发与发布检查\n\n要求 Node 24.18.0：\n\n```bash\nnpm ci\nnpm run verify\nnpm audit --audit-level=high\n```\n\n分层检查：\n\n```bash\nnpm run validate:runtime-contracts\nnpm run test:orchestration\nnpm run test:risk-policy\nnpm run test:run-state\nnpm run test:starter-prompts\nnpm run test:cli\nnpm run smoke:one-click:fake\nnpm run validate:docs-routing\nnpm run validate:live-claim\n```\n\n旧能力仍保留：Rule Registry、Creator OS IR、SRT 文本桥、七执行状态、预览审批、可恢复写入、媒体检查、外挂知识包与视觉候选治理。它们是高级底座，不再占据普通用户首屏。发布态字幕检查仍需显式配置根目录：\n\n```bash\nnode scripts/validate-caption-pages.mjs \\\n  --strict \\\n  --profile <profile.source.json> \\\n  --root <profile-config-root> \\\n  --input <captions.json>\n```\n\n工程顺序和真实验证闸见[公开路线图](04-项目设计与路线图/公开路线图.md)，历史升级约束见 [V1.3.1 迁移指南](https://github.com/maojiebc/majia-chatcut-koubo/blob/main/04-%E9%A1%B9%E7%9B%AE%E8%AE%BE%E8%AE%A1%E4%B8%8E%E8%B7%AF%E7%BA%BF%E5%9B%BE/V1.3.1%E8%BF%81%E7%A7%BB%E6%8C%87%E5%8D%97.md)。\n\n## 维护入口\n\n| 你要做的事 | 入口 |\n| --- | --- |\n| 第一次维护，不知道改哪里 | [01-从这里开始](01-从这里开始/README.md) |\n| 查字幕、转场、双画面和人脸取景 | [02-剪辑方法手册](02-剪辑方法手册/README.md) |\n| 记录真实任务的新坑 | [03-实操迭代与踩坑](03-实操迭代与踩坑/README.md) |\n| 看架构、路线图和迁移说明 | [04-项目设计与路线图](04-项目设计与路线图/README.md) |\n\n目录职责：\n\n```text\nagents/       安装后的默认一句话入口\nworkflows/    稳剪、快剪、专业增强、恢复和官方分工\nprofiles/     四套可复现默认方案\nschemas/      数据合同\ntemplates/    匿名示例与交付模板\nsrc/          路由、状态、风险、检查点和命令\nscripts/      自动检查与离线冒烟\nfixtures/     匿名正反例和故障场景\nreports/      脱敏真实验证状态\n```\n\n本地个人词表、项目路径和真实业务内容只放本机配置，不进入公开仓。完整维护地图见 [`01-从这里开始/README.md`](01-从这里开始/README.md)。\n\n## 版本记录\n\n**V1.7.0（2026-09-30）** — 环境准入、Hosted/Desktop 分流、字幕/转写/剪切/原声替换目标保护、官方来源快照与漂移检查、按当前版本选择真实 canary、间接依赖安全修复；真实端到端仍为 `UNVERIFIED`。\n\n**V1.6.0（2026-08-11）** — 新增一句话入口、三种模式、四套默认方案、`run/status/review/approve-decisions/approve-sample/request-revision/resume/report` 主流程、运行清单、决定记录、检查点、六维样片指纹、恢复协议和证据分离交付报告；新增 11 个匿名故障场景与真实验证声明门禁。真实 ChatCut 端到端仍为 `UNVERIFIED`。\n\n**V1.5.0（2026-07-25）** — 新增受治理的可选知识与镜头候选层；外部资源只能扩大候选，不能覆盖内容真相、隐私、审批或证据规则。\n\n\n完整历史见 [CHANGELOG.md](CHANGELOG.md) 或 [GitHub Releases](https://github.com/maojiebc/majia-chatcut-koubo/releases)。\n\n## 作者 / 联系\n\n**马甲（@maojiebc）** · 超级马甲\n\n如果这份 Skill 帮到你，欢迎交流踩坑、提需求或报问题：\n\n| 渠道 | 链接 |\n| --- | --- |\n| Email | [m9224@163.com](mailto:m9224@163.com) |\n| GitHub | [github.com/maojiebc](https://github.com/maojiebc) |\n| ClawHub | [clawhub.ai/p/maojiebc](https://clawhub.ai/p/maojiebc) |\n| X | [@maojiebc](https://x.com/maojiebc) |\n| 小红书 | [超级马甲](https://xhslink.com/m/4fQMJeHHWKC) |\n| 微信公众号 | [超级马甲](https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzY5NzIzODk2NA==#wechat_redirect) |\n\n> 这份 Skill 来自 14 年用户运营、数据与内容生产实践。\n\nFile v1.7.0:templates/local-config-example/README.md\n\n# 本地个人层模板（local-config-example）\n\n把本目录整体复制为 `~/.config/majia-chatcut-koubo/`，装进你自己的数字与偏好。skill 开工时会探测该目录：**存在则叠加在本包的通用规则之上**；不存在就只用包内通用值。本地层**永不进 git**、永不进公开仓——品牌词、真实业务数字、个人实测坐标全部放这里。\n\n```\n~/.config/majia-chatcut-koubo/\n  profile/            个人 operating profile(实测版式/字幕/音频数字);同名键覆盖包内\n                      assets/compositions.json 与模板默认值;一版一文件,升版不覆盖旧版\n  terminology.json    个人词表(机器读):validator 用 --terms 指向它\n  terminology.md      个人词表(人读版,可选):维护心得、证据记录\n  aesthetics.md       个人审美基线:过渡手感、构图偏好、保护基线清单\n  local-notes.md      个人补充护栏:私有工作流衔接、平台账号惯例、个人路径\n```\n\n对应关系：\n\n| 本地文件 | 覆盖/叠加的公开资产 | 用法 |\n| --- | --- | --- |\n| `profile/*.json` | `templates/operating-profile.template.json` 起模；同名键覆盖 `assets/compositions.json` 坐标 | 使用 source schema；剪辑开工先读；`validate-caption-pages.mjs --profile` 指向它 |\n| `terminology.json` | `templates/terminology.template.json` 起模 | `validate-caption-pages.mjs --terms` 指向它 |\n| `aesthetics.md` | `SKILL.md` 红线之上的个人裁决面 | 审美分歧时代理先读它再问你 |\n| `local-notes.md` | 无（纯个人层） | 写不适合进公开包的一切个人惯例 |\n\n例子文件都带注释，替换成你的内容即可。\n\nProfile 可以用相对 `extends` 继承一个父文件；每个路径都按**声明它的那一层文件**解析。数组整体替换，普通对象递归合并。叶 profile 必须自己声明 `status` 和完整 `provenance`，不能继承父层的项目/时间线可信身份。\n\n发布前先解析并检查来源：\n\n```bash\nnode src/cli/resolve-profile.mjs \\\n  --profile ~/.config/majia-chatcut-koubo/profile/<你的-profile>.json \\\n  --root ~/.config/majia-chatcut-koubo \\\n  --strict \\\n  --out ~/.config/majia-chatcut-koubo/generated/profile.resolved.json \\\n  --trace ~/.config/majia-chatcut-koubo/generated/profile.merge-trace.json\n```\n\n生成的 resolved 文件不含 `extends`，trace 可以追到每个字段来自哪一层。\n输出只能留在 `--root` 内，且可能包含项目级标识；两类默认文件名已在\n`.gitignore` 中排除。旧 profile 可先不加 `--strict` 做只读迁移检查，但\n`contractStatus=migration-incomplete` 时不会写出 resolved 文件。\n\nFile v1.7.0:_meta.json\n\n{\n  \"ownerId\": \"kn71njkqkab6a75db7hqb6ekz982jd29\",\n  \"slug\": \"majia-chatcut-koubo\",\n  \"version\": \"1.7.0\",\n  \"publishedAt\": 1790762525062\n}\n\nFile v1.7.0:02-剪辑方法手册/01-逐片执行手册.md\n\n# 逐片执行手册\n\n批量切片与逐片精修的执行契约、A-roll 删减增量、验证方法学与验收门禁。SKILL.md 五条第一性原则是本手册的上位法。\n\n## 一片一闭环\n\n一次只处理一个切片，按以下顺序完成后再进下一片。不得同时铺开多片修改。\n\n### 1. 冻结与盘点\n\n- 读 active timeline、所有轨道、字幕源、FX 和素材；记录 `timelineEnd`、`outroStart`、主音轨、录屏轨、人物轨、框线轨。\n- 「不动结构」时冻结内容清单（revision、源区间/切点、顺序、时长/速度、字幕时序、主音频映射）；有已验收参考时同时冻结视觉清单（状态序列、每个转场的方向/区间/时长/实现档、MG/FX owner）。\n- 列出所有可见 item/FX 的 owner；旧白块、重复人物、未知 MG/FX、跨片尾装饰和测试 probe 先入删除清单。\n\n### 2. 建状态表\n\n逐语义段标记 A/B-R/B-L/C1/C2/S/P 七执行状态（语义路由见 `dual-frame-layouts.md`）。P 是独立不透明 redaction owner，可与叙事状态重叠；人物大矩形与录屏裁切只承担构图。边界落在气口或现有切点。状态表先行是 SKILL.md 的硬闸：无状态表禁止批量 `edit_item`。\n\n### 3. 原子改画面\n\n- 先拆跨态媒体，再 `validateOnly` 校验整批 deletes/adds/updates，通过后原样提交。\n- 录屏统一应用 profile 裁切与静音；人物 anchor 唯一可听。\n- 框线实例区间必须与宿主状态完全一致；框线入场动画只管进入段（作者基线 `drawFrames=12`、`fadeOut=0`），在宿主区间精确结束。\n- 每次修复后回读整条轨道；框线轨区间并集必须等于需要框线的状态区间并集。\n\n### 4. 精修字幕\n\n按 `captions-terminology.md` 执行；先应用 profile 再立刻回读配置，`maxLines>2` 即停。默认单行，完整语义在安全宽度内确有需要时允许两行；全量页审计，validator 必跑。\n\n### 5. 音频与气口\n\n- 人物 anchor 从第 0 帧可听；先测 integrated/short-term LUFS、true peak 与噪声底再决定增益。重复轨优先 mute/disable；只有宿主无此能力且已记录兼容证据时才降级到 `-60dB`。片尾 click guard 与自然收束分开命名，不用一个固定 fade 覆盖所有情况。\n- 连续片段按 `sourceStart + duration/fps × playbackRate` 对账，防前段静音后段重播。\n- 变速可从 1.2–1.3x 试听（保持音高）；先完成口误与停顿清理再整体提速，1.3x 让情绪失真时局部保留 1.15–1.25x，不全片机械统一。\n- 导出音频样片实听：开头 2 秒、每个源跳转接缝前后 1–1.5 秒、最后一句。**轨道结构连续≠听感连续**；gain/source 参数正确不算通过，必须有实听或电平证据。\n- 机械检查：`ffprobe` 时长对账 + `silencedetect`（-38dB）查静音段 + `volumedetect` 首 0.1/0.5/1.0s 窗有声。\n\n### 6. 收尾验收（门禁汇总）\n\n**结构门**：空窗=0、跨态未拆分 item=0、可闻重复轨=0、孤儿 MG/FX=0、未知 override=0、探针残留=0、未分配 redaction owner 的隐私候选=0、`[outroStart,timelineEnd)` 正文 owner=0。\n\n**字幕门**：validator exit=0、三行及以上=0、逐行超限=0、单字卡=0、`<450ms`=0、未批准 `<800ms`=0、繁体=0、已知术语错=0；硬规则读 `rules/policy.json`，数字/专名纠错必须有证据。\n\n**音频门**：首 0.1s 有声、接缝试听通过、片尾无硬截断、无双声。\n\n**像素门**：首帧、每个状态边界 `(N,N+1)` 帧对、过渡 20%/50%/80%、隐私窗口全程、`outroStart−1/0/+1`、最后一帧。无法读取像素时只报 `structure-pass / pixels-unverified`。\n\n**八道硬闸**（历史事故的回归闸门）：\n\n1. **片尾终止审计**：`outroStart` 起除收束 owner 外一切正文装饰必须已结束；逐帧查 `T−1`、`T`、收束中点、最后可见帧。\n2. **第二次出现即事故**：同一可见故障本任务第二次出现，停局部补丁，定位共享资产根因，修复后旧验证全部作废、全实例回归。\n3. **动效行为守恒**：修改已验收参考风格前先建可见行为清单（状态序列/每类形状转换/进入退出）；不得以静态窗、硬切或暗幕替代已存在的连续动画，除非用户明确批准降级。\n4. **首屏暗幕门禁**：第 0 帧至首句落稳，任何顶层包装不得降低脸部亮度或遮人物；需要暗幕/标题页须作为独立视觉段落经用户确认。\n5. **开场实听证据**：0–2 秒必须实际试听或电平检查；只看 gain/source 参数不算通过。\n6. **二维码全时间线扫描**：先全片扫描发现所有候选窗口，再逐 geometry/state 覆盖验证；不能用某一稳定态的通过顶替过渡窗口。\n7. **参考状态表带效果栈**：记录参考片的可见动效类型、持续、进入/退出方式与保护状态，防止只抄到配色。\n8. **全量回归矩阵**：共享 MG/模板/属性一改，所有引用切片各验至少一个相关精确帧，任一失败阻断扩散。\n\n## A-roll 内容（官方之上的增量）\n\n官方 `talking-head-guide` 已覆盖口癖两分法、retake 处理、停顿阈值与 Script 工作流，直接执行官方。以下是增量：\n\n- **一句话原则：删声音比删意思安全；错删信息的代价高于漏留口癖。**\n- 删前保后：句间重说删前版、句内重启只删错误片段、词头卡壳删第一个不完整词头、多次重说保留最后完整版。有证据或用户指定才反向。\n- 风险分级：低（明确空白、纯卡壳、逐字子集）小批处理后抽检；中（单个口头词、短句内重启、0.2–1s 停顿）听前后语境；高（整句、长片段、改写式重说、跑题、专业词附近）逐项核对保留版覆盖独有信息，没证据就保留或交用户。\n- 口播稿只做语义对齐与补漏，不逐字 diff，不用稿件替换说话人未说过的内容。\n- ASR 头尾盲区：完成删减后检查媒体真实开头结尾（开机动作、收尾杂音、伸手关录制）。\n- 候选删除清单≠实际落刀：回读最终时间线并试听实际切点。\n- 笑声、反应、结论后的留白、录屏操作停顿可能是内容，不当普通空白清除。\n- 信息流切片开头问候/自我介绍/铺垫默认删（预判定见 `retention-structure.md`）。\n\n## 批量流水线\n\n1. **切片指令契约**：锁定三要素 = 数量 + 单片时长档 + 目标平台（画幅/字幕位置/时长按 `retention-structure.md` 平台路由）。\n2. **源级资产单次化**：源转写、术语表、素材盘点全批次共享；逐片重转写视为违规。\n3. **选段人工闸门**：AI 选段在 transcript 面板逐段确认后才进下游。\n4. **模板层冻结**：字幕样式、色板、包装模板在样片确认后冻结；共性错误在模板层修一次全批生效。**但模板层只冻结共性——动效、气口、字幕必须逐片执行验收，逐片精修优先于批量模板化。**\n5. **代表片先行**：至少三类——R1 开场、R2 最复杂合成（录屏+人物+隐私/框线）、R3 最复杂片尾；代表片通过只证明模板可扩散，不豁免逐片门禁。\n6. **回归矩阵**：每受影响切片一行，记录开场 0–2s 实听、状态/动画清单对账、全部边界、隐私窗口、`outroStart` 交接、orphan/probe/未知 override 计数。每个 `pass` 绑定 timeline revision、帧域、准确帧和证据 ID；revision 或共享实现变化后全部转 `stale`。\n7. **重复缺陷计数**：按 `failureSignature + assetVersion + verificationEpoch` 统计；第二次出现走硬闸 2。用户指出的缺陷存为命名 canary（原始时间码+语义边界+失败签名），重定时后按语义边界重定位。\n\n### 多代理调度编制（宿主支持 spawn 时）\n\n- **分片包干**：批量审计按 2–4 片一组分包并行。\n- **单片三线**：精修期一片拆 结构/字幕/音频（或 视觉/脚本/字幕）三条只读审计线并行，修复归主线程；审计线不改项目、不切时间线，只交问题清单+精确 key。\n- **流水线重叠**：当前片收尾时即派下一片 preflight。\n- 子代理结论主动回传，不依赖轮询；审计与修复不并发互踩——结构冻结后再终验，冻结前的证据作废。\n\n## 生成资产纪律（ChatCut 生成工具）\n\n- **成本契约**：单次生成执行前必读工具显示的预估成本，超出用户已授权范围先报价再执行；一次任务预估生成调用 ≥3 次时，合并成一次提案报预估总成本让用户选全部/部分/不加，不逐条打断也不静默连发。\n- **降级预案**：生成服务有高峰期全线超时的历史，关键交付不押生成成功——每个生成资产预先声明降级备选（真实录屏局部放大 / 原始截图 / 静态卡 / 已入库 MG），连续三轮失败即切降级，与「自动修复三轮上限」共用同一出口。\n- **参考图先行（默认必做）**：任何 image/video 生成及风格敏感的 MG 生成前，先上传参考图——已冻结色板的样片帧、品牌截图或已确认切片的代表帧，再下生成 prompt。参考图是官方明示「显著改善结果」的第一杠杆，也是色板的像素级载体。\n- **两段式视频生成**：生成 B-roll 默认先用 image 生成产出首帧静态图并经人工确认，再以该图为起点跑 video 生成。证据类画面（操作演示、数据结果、报错）禁止用生成素材替代，两段式不构成豁免。\n- 生成/自动匹配的 B-roll 存在「重复且泛」的实锤：入片前查重并判断语义贴合，泛素材直接拒绝，不因生成成功就入片。\n\n## 验证方法学\n\n- **双证据原则**：分阶段 `read_project` 结构回读 + `view_timeline_frames` 合成像素，二者都过才算验证。\n- **抽帧法**：状态切换点取 `(N,N+1)` 帧对 + 末帧 + 每状态中段代表帧；过渡另取 20%/50%/80%。多帧下载后 `ffmpeg tile=3x3` 拼 contact sheet 一次目检，省 token 省审批。\n- **钳制帧双读**：时长边界帧号会被钳制到最后可见帧，双读比对一致再采信。\n- **批量网格只筛查**：可疑帧单独请求精确帧并独立复验 ≥2 次；不靠反复重渲染到偶然成功。\n- **写入成功≠落盘**：Zoom/FX 宣称添加成功后必须回读 fx-track 实例确认存在（曾发生批量「已加」实际 0 条）。\n- **素材池≠时间线**：正确资产存在于媒体池不算证据，必须验证 active timeline instance。\n- **变速换算**：`find_transcript` 词级帧未折算 `playbackRate`，精确落刀按源时间换算。\n- **shell 分工**：ffmpeg/ffprobe 只做证据加工（下载、拼图、音频指标、抽源帧对照）；不绕过 ChatCut 交付压平成片。宿主支持编程式批量调用时，读写比应远大于 1。\n- **502/传输错误**：无画面证据时原样重试同一验证请求，不据此改时间线（写操作报错先回读，见 `recovery.md`）。\n\n## 导出与帧率\n\n- 用户开口才导出。短导出授权按措辞记录为「仅指定样片」或「本任务同规格验证性短导出」；范围改变或进完整成片导出，重新确认；授权不跨任务/会话。\n- **帧率以实际文件为准**：30fps 时间线可能 60fps 导出；`submit_export` 区间参数按输出帧域解释，先换算 `exportFrame = round(timelineFrame × exportFps / timelineFps)`，下载后 `ffprobe` 对账真实 fps/帧数/首尾内容。文件名写着 transition 不能替代对画面内容的检查。\n- 未授权导出时如实标注「最终文件未验证」。\n\n## 编辑决策记录\n\n高影响决定（整句删除、重排、结构变更）保留：源区间、目标区间、口述/画面证据、理由、风险、下游依赖、状态。执行后以实际回读覆盖预计值。目的可解释可复查，不强制外部文件。\n\n## 止损与汇报\n\n- 自动修复最多连续三轮，每轮要有新证据和明确变化；三轮后停，保留最近可用版本，报告具体区间与人工检查点。\n- 卡死可产出带证据帧的交接 md 请外部 AI 复核；回件结论仍须本地验算后分级采纳。\n- 汇报：只描述可见结果，不暴露内部 key/id；每个「已完成」都能映射到 revision、帧域、准确帧和证据；`unverified` 明示原因与建议人工检查点，不静默打钩。\n\nFile v1.7.0:02-剪辑方法手册/02-双画面版式.md\n\n# 双画面版式系统\n\n「录屏画面 1 + 主讲人画面 2」的双画面构图：横竖版各 4 套具名版式、语义选型决策器、小窗腾挪规则。坐标真相源 = `assets/compositions.json`（本包内置快照，画布 16:9 1920×1080 / 9:16 1080×1920，均 30fps）。\n\n## 版式总表\n\n| 画幅 | layoutId | 名称 | 主讲人形态 | 何时用 |\n| --- | --- | --- | --- | --- |\n| 16:9 | `landscape-screen-pip-right` | 录屏主画面 · 右下人像 | 330px 正圆 | 横版演示默认态 |\n| 16:9 | `landscape-screen-pip-left` | 录屏主画面 · 左下人像 | 330px 正圆 | 录屏右侧有关键 UI 时避让 |\n| 16:9 | `landscape-split-right` | 左屏右人 · 专业分栏 | 418×784 圆角矩形 | 讲解与表情同等重要 |\n| 16:9 | `landscape-presenter-focus` | 操作讲解 · 人物加强 | 608×742 圆角矩形 | 观点/转折/情绪承接 |\n| 9:16 | `portrait-screen-top-speaker-center` | 上屏下人 · 经典口播 | 480px 正圆居中 | 竖版演示默认态 |\n| 9:16 | `portrait-screen-focus-pip-right` | 录屏放大 · 右下人像 | 400px 正圆 | 密集 UI 定向裁切、避让左侧核心区 |\n| 9:16 | `portrait-split-stack` | 录屏与人 · 上下分屏 | 936×500 矩形 | 手势/上半身表达需保留 |\n| 9:16 | `portrait-speaker-focus-cutout` | 录屏证据 · 人物强表达 | 610×650 透明抠像 | 强观点段（需抠像素材） |\n\n每个版式在 `compositions.json` 里都带 screen/speaker/title/point/subtitle 五个区域的精确坐标与圆角；字幕基线横版 40px、竖版 84px 单行。\n\n## 三态叙事骨架 → 七个执行状态\n\n口播画面在三个叙事态间流转：**A 人物全屏**（钩子/结论/转折/强情绪）、**B 双画面**（演示/操作/数据）、**C 人物加强**（演示段落里的观点承接）。落时间线时把 B、C 各拆成两个可操作状态，并显式加入 S 纯录屏与 P 隐私覆盖——这样能机器检查 owner、合法转向和隐私覆盖，不把圆形、矩形、全屏当作轮播预设：\n\n| 执行状态 | 进入信号 | 退出信号 |\n| --- | --- | --- |\n| **A 全屏人物** | 开场钩子、强转折、重大结论、收尾 | 开始展示必须看清的屏幕证据 |\n| **B-R 右侧圆窗** | 步骤/按钮/字段/数字/连续操作，关键 UI 在左中部 | 关键 UI 移到右侧，或话语转入解释 |\n| **B-L 左侧圆窗** | 关键 UI、鼠标路径或字幕保护区在右侧 | UI 重心换边 |\n| **C1 专业分栏** | 「为什么」「背后的逻辑」等解释段，仍需屏幕上下文 | 回到连续操作，或结论强到应回 A |\n| **C2 人物加强** | 「真正重要的是…」「所以我的结论是…」等观点句 | 进入必须看清的细节操作 |\n| **S 纯录屏** | 密集 UI、连续操作或人物遮挡关键证据；人物隐藏但 anchor 仍唯一可听 | 需要人物陪伴、解释或结论强调 |\n| **P 隐私覆盖** | 检出二维码、账号、手机号、密钥或个人数据 | 敏感内容已离开画面且边界复验通过 |\n\nP 是**独立、不透明、全区间**的 redaction owner，可与叙事状态重叠；人物大矩形与录屏裁切只能改善构图，**不能作为隐私安全保证**。redaction 必须覆盖每个稳定态、全部过渡和边界帧；部分遮挡=失败（ChatCut 端的源头平移优先处置见 `chatcut-field-notes.md` 隐私扫描 SOP）。\n\n**双素材呼吸感**：人物和录屏是两个平等的呼吸主体，各自都应该有放大到全屏/近全屏的时刻——人物升 A、录屏升 S 交替出现，不能只让人物变而录屏永远蹲在窗里。长片（>5 分钟）每幕至少评估一次 S 态机会（关键操作、纯屏幕证据、画面自身有叙事力的段落）；A 与 S 的交替是节奏的上限刺激，不是例外。\n\n### 选型决策顺序（前项可否决后项）\n\n1. **隐私与安全**：二维码、账号、密钥必须先消失。\n2. **屏幕证据**：观众必须看清什么？证据密集优先 B；关键 UI 决定人物在左还是右。\n3. **人物强调**：这句话靠表情/判断/情绪成立吗？解释原因优先 C1，强观点优先 C2，屏幕已无必要证据才升 A。\n4. **字幕负载**：长字幕、连续数字、英文命令占用阅读带宽，保持 B 或克制的 C1。\n5. **新鲜感提醒**：约 30–45 秒无构图变化时触发**复查**——但时间不是自动切换器，连续操作仍需完整证据时有理由保持 B。\n\n### 切换落点与节奏\n\n- 切换只落在**气口或章节边界**，不在句中切。关键句需要放大人物时，在句前气口提前约 0.3–0.6 秒起动，让画面在关键句首个有效音节附近落稳。\n- 相邻两次状态变化之间至少完成一个完整语义单元；常规停留约 4–6 秒以上（A 常见 2–6s，C2 约 4–12s，C1 约 10–25s——样片起点，非硬计时器）。\n- 45–90 秒切片通常 3–5 个状态段，90–120 秒通常 4–7 个；每次人物放大都应对应更重要的一句话，每次缩小都应因为录屏证据更有价值。连续两次只换形状/换边却没有语义变化 = 装饰性抖动，合并。\n- 单一构图连续超过约 25 秒按静态失败复查。\n\n## 状态落地的原子契约\n\n状态表落到时间线时，把每个稳定态写成半开区间 `[startFrame,endFrame)`，同区间的三项视为一个不可拆的提交单元：①录屏层的 rect、fit/crop 与静音状态；②人物层的可见 rect、窗形/蒙版、内部取景与主音频归属；③共享框线/装饰的状态与人物轮廓 knockout。\n\n- **状态表最少字段**：`stateId | [start,end) | 三层参数 | inTransitionId | outTransitionId | privacy | semanticReason`。这也是 SKILL.md「状态表先行」硬闸要求请用户过目的表。\n- **按区间相交审计**，不按 item 起点猜状态：每个媒体 item 必须只命中一个稳定态；同时与两个状态相交时，先在合法气口拆分 item 或把状态边界移到已有切点，再同步三层。禁止先改人物与框线、以后再补录屏。\n- 每个可见的非字幕 item/FX 必须且只能绑定一个 owner（开场/稳定态/过渡/片尾）；装饰层区间不越出宿主状态区间，跨多个宿主就在边界拆实例。owner 不明的旧 MG、probe、孤儿 FX、未知 override 都阻止交付。\n- 宿主没有事务 API 时也按逻辑事务执行：`validateOnly → 保存修改前值 → 写入三层 → 结构回读 → 精确帧`；任一层失败即恢复修改前值并复验，不带着半成品推进下一状态或扩散到批量。\n- 把 `outroStart` 作为明确帧号写入状态表；正文所有 owner 的区间必须在 `outroStart` 之前结束，`[outroStart,timelineEnd)` 只允许收束 owner 可见（片尾孤儿框线是高频事故，验收门禁见 `operating-manual.md`）。\n\n## 小窗腾挪\n\n主讲人小窗的位置变化服务于录屏讲解，不是装饰运动：\n\n- **避让为先**：小窗不压当前讲解的 UI、数值、光标轨迹；录屏重点区换边时小窗换到对侧（pip-right/pip-left 即此用途）。\n- 同版式内的位置平移在**气口处一次到位**，不做常驻漂移动画；跨版式结构变化只在章节/主题切换处做。\n- 频率约束：位置变化次数 ≤ 叙事状态数。\n- 每次落位后重跑保护区检查：不压字幕、不压关键 UI、区域边界不重叠。\n\n## 竖版补充\n\n- 竖版不是横版缩小补黑边。录屏按页面信息密度分级裁切：全貌约 5% / 概念页约 8% / 表格与密集 UI 约 10% 或定向裁切；每次裁切保护正在讲解的标题、数值、按钮、字段与光标。\n- 竖版有两套并行的文字体系，不得混用：**字幕体系**（手机端单行字幕，84px 基线，见 `captions-terminology.md`）和**包装体系**（顶栏/章节标签/观点条/页脚等信息舞台文字，约 32px 起步、分档到 112–126px）。包装体系的小号副文不是字幕的备选字号；不要为塞更多装饰文字缩小字号。\n- 裁切按镜头任务切换，不按固定秒数：同一页面先全貌、说到具体信息切局部、需要时回结果全貌；录屏窗口保持稳定尺寸，改变的是内部画面焦点。\n- 内容保护区：录屏、讲解人、观点条、字幕边界不重叠，相邻区域保留约 10–45px 空隙。\n- 目标平台含微信视频号时，字幕与关键包装收进中央 6:7 区域（1080×1260，y≈330–1590），或单独交付重排变体。\n- 最终以手机观看距离验收：把代表帧缩到约 25–30% 再检查一遍字幕与录屏文字可读性。\n\nFile v1.7.0:02-剪辑方法手册/03-主题配色.md\n\n# 主题配色系统\n\n包装（字幕底板/标题/标签/观点条/MG）的配色规则与 8 套已实测主题。色值唯一真相源 = `assets/theme-kit/tokens/themes.json`；SVG 底图、1080×1920 布局与可运行 HTML 组件都在 `assets/theme-kit/`（打开 `index.html` 看总览）。\n\n**每套主题自带一份代理 playbook**（`assets/theme-kit/playbooks/<id>.md`）：token 语义与实测档位、版式搭配、信息块偏好、字幕底板硬规则、以及一段可直接嵌进 MG 生成指令的「调用 crib」。标准用法：**选定主题 → 完整读它的 playbook → 生成图形时把 crib 嵌进指令**，不再逐元素查表挑色。\n\n## 用法总则\n\n1. **开工冻结一套主题**，记录 `paletteId + paletteVersion + 明暗模式 + 输出色域`；同一条片不逐元素临时挑色，不跨主题混搭角色。\n2. **按角色令牌用色**：`canvas`（大面积底）/ `surface`（卡片、字幕底）/ `ink`（正文字幕）/ `inkMuted`（辅助）/ `primaryFill+onPrimary`（品牌填充+反色字，两个角色分别验收）/ `accent`（低频强调）/ 语义色只在真有语义时用。\n3. 大多数口播包装只需要「一组中性色 + 一个主色 + 最多一个强调色」。\n4. 用户未指定主题时给 1–2 个候选让用户拍板，不代替用户决定视觉气质。\n\n## 八套主题（9:16 口播卡片场景）\n\n| id | 模式 | canvas | ink 对 canvas | 推荐场景 |\n|---|---|---|---|---|\n| `deep-space-blue` 深空蓝 | dark | `#0B132B` | 18.4:1 | 数据分析、技术解释、AI 实战 |\n| `emerald-gold` 墨绿金 | dark | `#0F2E2E` | 13.2:1 | 业务复盘、策略、经营分析 |\n| `warm-gray-orange` 暖灰橙 | light | `#F7F4F1` | 11.5:1 | 干货分享、培训、用户故事 |\n| `midnight-purple` 午夜紫 | dark | `#1A1026` | 18.3:1 | 趋势洞察、创新话题、产品发布 |\n| `minimal-black-white` 极简黑白 | light | `#F5F5F5` | 17.3:1 | 知识卡片、观点输出、问答栏目 |\n| `sea-salt-cyan` 海盐青 | light | `#E6F4F1` | 7.7:1（v1.1 加深后达标） | 用户运营、会员增长、轻量科普 |\n| `earth-brown` 大地棕 | light | `#F6F1E9` | 11.8:1 | 商业思考、案例复盘、品牌故事 |\n| `vitality-lime` 活力青柠 | light | `#ECFDF5` | 13.2:1 | 活动宣导、会员日、上新传播 |\n\n### 已实测档位限制（按最终合成像素复核过）\n\n- `sea-salt-cyan` 的正文色已在 token v1.1 加深为 `#07554F`（对 canvas 约 7.67:1，达 7:1 目标；旧 `#0B5F58` 仅 6.65:1 已废止）；字幕在录屏等复杂背景上仍配 `surface`（`#F7FFFD`）底板保底。\n- 深色三套（deep-space-blue / emerald-gold / midnight-purple）的 `accentStrong` 对 canvas 仅 1.8–2.6:1，**只能做填充底**配 `onPrimary` 反色字，禁止直接当文字色。\n- 浅色四套的 `border` 对 canvas 仅 1.6–2.7:1，纯装饰线，不承担有信息意义的分隔。\n- 各主题 `accent` 多为大标题级（4.8–6.9:1）：只用于大号强调词与数字高亮，不用于正文和小字号。\n- 半透明角色（`surfaceMuted`/`speakerSurface`/`glow`）一律以五类背景（亮、暗、肤色、彩色 UI、高细节）的最终合成像素验收。\n\n## 对比度内部目标\n\n视频会经历缩小、运动、编码和复杂背景，所以比 WCAG 更严：\n\n| 内容 | 目标 | 不达标怎么办 |\n|---|---:|---|\n| 字幕、正文、小标签、关键数字 | `≥ 7:1` | 改前景/底板/字号结构，不靠加阴影抢救 |\n| 大标题、短时大号反色字 | `≥ 4.5:1` | 手机尺寸+实际编码后仍清楚才放行 |\n| 有信息意义的边框、图标、数据线 | `≥ 3:1` | 同时增加形状、粗细、标签或纹理 |\n\n执行要点：对比度按**最终合成像素**计算（半透明底、渐变遮罩要在真实画面上重测）；白字不自动安全（亮橙 `#FF6B35` 配白字仅 2.84:1，禁用于字幕；配深色字 5.78:1 只适合大号短文案）；颜色不做区分信息的唯一通道（同时用文字/图标/形状）。\n\n## 色板简报（palette brief）\n\n包装开工前冻结一份 palette brief，模板/MG 复用时随资产记录，之后才能整体换肤：\n\n```yaml\npaletteId: sea-salt-cyan      # 主题 id，不把版本号拼进 ID\npaletteVersion: 1.1.0\nmode: light\noutputGamut: rec709-sdr\nverifiedPairs:                 # 实测过的前景-背景对\n  - [ink, canvas, 7.67]\n  - [onPrimary, primaryFill, 8.44]\n```\n\n`paletteId`、版本、模式和输出色域是模板契约的一部分；不得在同一条片里逐元素临时挑十六进制值，也不得把浅色模板的颜色直接复制到深色模板。\n\n## 感知均匀色阶与色域\n\n- 从品牌种子色生成深浅层级时，优先在 HCT、OKLCH 或 LCh 里做；不要在 HSL 里等步长拉亮度后假设视觉上也等距。\n- 同一色族主要靠明度/色调建立层级，彩度在极亮和极暗端主动收敛，避免高光发荧光、暗部发脏。\n- 渐变、热力图和动画补间优先在 OKLCH/LCh 中插值；RGB 直插容易出现灰泥中点或不自然色相漂移。\n- P3/HDR 包装转 SDR 时做感知色域映射，不把超出色域的通道逐个硬裁到 0/255；正式 SDR 交付检查实际导出。\n- 跨模板匹配的颜色在同一画面并排比较最终合成帧；有工具时以 `ΔE2000 < 2` 为一致参考线——「十六进制相同」不保证经过不同色彩管线后看起来相同。\n\n## 图表与数据色板\n\n| 数据关系 | 色板类型 | 规则 |\n|---|---|---|\n| 从低到高的数值 | Sequential 顺序 | 单一或相邻色相，明度单调变化 |\n| 围绕零点/目标值的正负 | Diverging 发散 | 中点必须有业务含义，不放任意均值 |\n| 无顺序的多个类别 | Categorical 分类 | 色相区分为主；直接标注类别，避免只放图例 |\n| 周期数据 | Cyclical 周期 | 只有时间环、角度等真正首尾相接时用 |\n\n优先从 D3 Scale Chromatic / ColorBrewer 对应家族选，再映射到当前主题的中性色背景。禁止对普通数值使用彩虹色阶；分类超过约 6 个时优先分组、直标、分面或加形状。灰度预览仍应读出顺序与关键差异；色觉缺陷模拟后结论不能消失。\n\n## 检查清单\n\n- [ ] `paletteId` + 版本 + 模式 + 色域已冻结，实例无散落的任意十六进制值\n- [ ] 一组中性色 + 一个主色 + 最多一个强调色；语义色未被当装饰\n- [ ] 字幕/正文 7:1、大标题 4.5:1、有意义图形 3:1\n- [ ] 白字未压在亮黄/亮橙/浅色底上\n- [ ] 半透明叠层按五类背景合成像素验收\n- [ ] 灰度预览仍有阅读层级\n\n工具：`assets/theme-kit/scripts/check-contrast.mjs` 可机械校验色对；位图底图不入库，用 `assets/theme-kit/scripts/render-backgrounds.py` 从 SVG 再生。\n\nArchive v1.6.0: 277 files, 2284739 bytes\n\nFiles: 01-从这里开始/README.md (3568b), 02-剪辑方法手册/01-逐片执行手册.md (12506b), 02-剪辑方法手册/02-双画面版式.md (8635b), 02-剪辑方法手册/03-主题配色.md (6801b), 02-剪辑方法手册/04-信息块与画面任务.md (5453b), 02-剪辑方法手册/05-过渡动效.md (7453b), 02-剪辑方法手册/06-人脸取景与三层合成.md (7944b), 02-剪辑方法手册/07-字幕与术语.md (11034b), 02-剪辑方法手册/08-留存结构与平台路由.md (7572b), 02-剪辑方法手册/09-ChatCut宿主实测.md (10593b), 02-剪辑方法手册/10-故障恢复.md (4528b), 02-剪辑方法手册/11-外挂知识包与镜头配方.md (7274b), 02-剪辑方法手册/README.md (1733b), 03-实操迭代与踩坑/README.md (3598b), 03-实操迭代与踩坑/案例/2026-07-24-AI-Hero母片精修.md (44561b), 03-实操迭代与踩坑/迭代记录.md (23676b), 04-项目设计与路线图/AI剪辑规则吸收记录.md (4115b), 04-项目设计与路线图/README.md (1008b), 04-项目设计与路线图/V1.3.1迁移指南.md (8441b), 04-项目设计与路线图/主题预览.png (1370361b), 04-项目设计与路线图/公开路线图.md (23530b), 04-项目设计与路线图/契约基线.md (3901b), 04-项目设计与路线图/系统架构.png (380994b), 04-项目设计与路线图/系统架构.svg (9023b), AGENTS.md (2518b), agents/openai.yaml (468b), assets/compositions.json (7164b), assets/theme-kit/AGENTS.md (1429b), assets/theme-kit/assets/backgrounds/01-deep-space-blue.svg (1779b), assets/theme-kit/assets/backgrounds/02-emerald-gold.svg (1625b), assets/theme-kit/assets/backgrounds/03-warm-gray-orange.svg (1721b), assets/theme-kit/assets/backgrounds/04-midnight-purple.svg (1626b), assets/theme-kit/assets/backgrounds/05-minimal-black-white.svg (1257b), assets/theme-kit/assets/backgrounds/06-sea-salt-cyan.svg (1573b), assets/theme-kit/assets/backgrounds/07-earth-brown.svg (1379b), assets/theme-kit/assets/backgrounds/08-vitality-lime.svg (1664b), assets/theme-kit/assets/overlays/safe-area.svg (747b), assets/theme-kit/assets/overlays/speaker-placeholder.svg (341b), assets/theme-kit/components/portrait-talk-card.css (12009b), assets/theme-kit/components/portrait-talk-card.html (529b), assets/theme-kit/components/portrait-talk-card.js (6771b), assets/theme-kit/docs/codex-prompt.md (1278b), assets/theme-kit/docs/layout-spec.md (1436b), assets/theme-kit/docs/theme-guide.md (1647b), assets/theme-kit/examples/demo-data.json (435b), assets/theme-kit/examples/PortraitTalkCard.tsx (1358b), assets/theme-kit/examples/single.html (4578b), assets/theme-kit/index.html (4361b), assets/theme-kit/manifest.json (2260b), assets/theme-kit/package.json (279b), assets/theme-kit/playbooks/01-deep-space-blue.md (2542b), assets/theme-kit/playbooks/02-emerald-gold.md (2366b), assets/theme-kit/playbooks/03-warm-gray-orange.md (2373b), assets/theme-kit/playbooks/04-midnight-purple.md (2238b), assets/theme-kit/playbooks/05-minimal-black-white.md (2265b), assets/theme-kit/playbooks/06-sea-salt-cyan.md (2500b), assets/theme-kit/playbooks/07-earth-brown.md (2276b), assets/theme-kit/playbooks/08-vitality-lime.md (2358b), assets/theme-kit/README.md (3263b), assets/theme-kit/requirements.txt (16b), assets/theme-kit/scripts/check-contrast.mjs (2008b), assets/theme-kit/scripts/render-backgrounds.py (406b), assets/theme-kit/tokens/layouts.json (8785b), assets/theme-kit/tokens/themes.css (5272b), assets/theme-kit/tokens/themes.json (13963b), assets/theme-kit/tokens/themes.schema.json (8312b), assets/theme-kit/tokens/themes.ts (15023b), CHANGELOG.md (26814b), extensions/cuttips-kb/data/categories.json (2409b), extensions/cuttips-kb/data/knowledge-items.json (53968b), extensions/cuttips-kb/data/rules.json (10903b), extensions/cuttips-kb/data/sources.json (134854b), extensions/cuttips-kb/data/stats.json (610b), extensions/cuttips-kb/manifest.json (1367b), extensions/cuttips-kb/scripts/query.mjs (4435b), extensions/registry.json (556b), extensions/video-shotcraft/allowlist.json (3611b), extensions/video-shotcraft/manifest.json (939b), extensions/video-shotcraft/scripts/inspect-provider.mjs (2569b), fixtures/capabilities/valid/unverified-profile.json (1326b)\n\nFile v1.6.0:SKILL.md\n\n---\nname: majia-chatcut-koubo\ndescription: ChatCut 口播与录屏视频的一句话编排和安全默认层。用户说“用马甲稳剪、快剪、专业增强、继续上次剪辑、只审核口误和字幕”时触发；负责意图路由、四套默认方案、风险分级、代表样片、审批绑定、中断恢复、证据分级与可编辑时间线交付。项目操作与工具参数始终交给 ChatCut 官方 Skill。默认不重排观点，不添加音乐、动态图形、补充画面或生成素材，不导出、不发布。真实 ChatCut 端到端只有当前匿名样本和工具证据齐全时才能宣称通过。\nmetadata:\n  version: 1.6.0\n---\n\n# ChatCut口播 · 马甲实战版\n\n你是官方 ChatCut 能力之上的轻量流程助手。让普通创作者用一句话进入安全、可恢复、可审阅的口播流程，不要先展示全部高级知识。\n\n## 用户合同\n\n用户说“用马甲稳剪”时：\n\n1. 检查当前 ChatCut 会话、项目、时间线和素材。\n2. 只自动处理有证据的低风险口误、失败重说和批准范围内的长停顿。\n3. 先做代表样片；用户确认后才扩展整片。\n4. 先锁定 A-roll，再做声音平滑和基础字幕。\n5. 分开验证结构、画面、音频测量、人耳试听、隐私和用户确认。\n6. 默认交付可继续编辑的 ChatCut 时间线和自然语言报告。\n\n默认不重排观点，不删除整句/数字/专名/否定附近内容，不加音乐/动态图形/补充画面/生成素材，不覆盖手工修改，不导出，不发布用户视频。\n\n## 与官方 Skill 的边界\n\n工具怎么调用、参数叫什么、产品当前支持什么，一律以当前 ChatCut 官方 Skill 和工具说明为准。本 Skill 只补流程衔接、安全默认、风险与审批、恢复和交付报告。\n\n任何非机械小修，按任务加载：\n\n| 阶段或信号 | 官方 Skill |\n| --- | --- |\n| 项目定位与编辑器交接 | `chatcut-plugin-basics` |\n| 口播清理方法 | `talking-head-guide` |\n| 转写和字幕 | `transcription` |\n| 结构与合成画面验证 | `verification` |\n| 导入素材 / 多机位 | `asset-import` / `multicam-sync` |\n| 音乐 / 动态图形获批 | `music` / `create-motion-graphics` |\n| 特殊画面 / 生成视频 / 语音获批 | `shader-gen` / `video-gen` / `voice` |\n| 导出获批 / 已知故障 | `export` / `known-errors` |\n| 产品问题 / 一次性询问 | `product-help` / `widget-forms` |\n\n完整分工见 [官方能力分工](workflows/official-skill-map.md)。禁止长期复制官方参数或内部对象获取方法。\n\n## 识别意图\n\n- `run + stable`：马甲稳剪、一键稳剪、剪干净、处理口误停顿和字幕。\n- `run + fast`：快剪、短口播、尽快出样片。\n- `run + pro`：专业增强、录屏演示、双画面或明确高级处理。\n- `review`：只审核、先不要改、只看口误和字幕方案。\n- `resume`：继续上次、恢复、接着剪。\n\n无法确认时使用 `stable`，不要把模糊需求解释成更大授权。先自动读取当前项目、时间线和素材；只有无法唯一绑定时才问一个聚焦问题。若还缺多个创作字段，一次性询问最多五项：目标、节奏、目标时长/平台、字幕偏好、录屏/隐私/必须保留内容。不要让用户重复提供工具已经能读到的信息。\n\n可直接使用以下路线：\n\n- [一句话稳剪](workflows/one-click-stable.md)\n- [快剪](workflows/fast-cut.md)\n- [专业增强](workflows/pro-enhance.md)\n- [继续未完成剪辑](workflows/resume.md)\n\n## 选择默认方案\n\n| 条件 | 方案 | 默认特点 |\n| --- | --- | --- |\n| 普通口播 | `balanced-stable` | 原顺序、自然节奏、A-roll 单画面 |\n| 30–90 秒快剪 | `tight-short` | 更紧，但重排仍需确认 |\n| 5–30 分钟长片 | `trust-longform` | 保护案例、数字和论证链 |\n| 录屏 + 人物 | `screen-demo` | 屏幕证据优先，隐私必须验证 |\n\n机器合同在 [`profiles/`](profiles/)。个人偏好只能保持或收紧安全规则。除非用户明确说“学一下”，不要把一次反馈写成长期偏好；即使明确要求，也只生成候选差异，先展示再保存。\n\n## 运行清单\n\n每次任务创建稳定、匿名的 `runId`，记录阶段/状态、项目与时间线逻辑引用、时间线版本、方案指纹、素材清单、审批、检查点、最近安全动作、失败计数和当前能力证据。\n\n运行记录默认放在项目内 `.majia-koubo/`，不得进入公开仓或最终交付物。公开报告禁止真实项目/素材 ID、签名链接、本机绝对路径、字幕全文和私有词表。\n\n## 阶段状态机\n\n```text\npreflight\n→ brief_ready\n→ project_ready\n→ transcript_ready\n→ edit_plan_ready\n→ sample_ready\n→ sample_approved\n→ full_aroll_applied\n→ captions_audio_ready\n→ enhancements_ready（仅获批）\n→ verified\n→ review_ready\n→ exported（仅获批）\n```\n\n样片要求修改时进入 `revision_requested`，回到 `edit_plan_ready`。`blocked` 是状态：保留最近安全阶段和检查点，恢复前先对账，必要时才重做前置检查。默认终点是 `review_ready`；没有导出审批不得进入 `exported`。\n\n## 风险决定\n\n每项决定记录原话、处理结果、类型、风险、理由、证据、状态和审批引用。\n\n低风险（有证据可自动）：纯静音头尾；无语义迟疑音；词头卡壳后接完整词；没有新信息的紧邻失败重启；批准范围内的长停顿；可验证重复对白轨静音；幂等声音平滑。\n\n中风险（进样片/清单）：口头连接词；自然气口和短停顿；有细微信息差的相似表达；句内局部重说；不完整短语；字幕断句/标点/显示改写；问候、自我介绍和背景铺垫。\n\n高风险（必须明确批准）：整句/长段删除；数字、案例、专名、否定附近内容；重排/钩子前置/多 Take；超范围压缩；人物裁切/画面重构；隐私不确定；删除已确认元素；生成内容；导出与发布。\n\n高风险无审批引用时禁止应用；中风险无样片确认时禁止扩展整片。\n\n## 代表样片\n\n- ≤3 分钟：开头 20–30 秒 + 最复杂切点。\n- 3–10 分钟：开头 45–60 秒 + 最复杂窗口。\n- >10 分钟：开头 60 秒 + 最复杂状态 + 隐私高风险段 + 片尾。\n\n尽量覆盖重说、停顿和开头体验；录屏再覆盖隐私/人物窗，长片再覆盖结尾。样片字幕只作局部临时预览，正式全片字幕必须在 A-roll 锁定后生成。\n\n样片批准绑定计划、风格、版式、字幕、时间线版本和样片窗口六维指纹。批准范围必须精确覆盖当前样片；任一变化，旧批准和依赖证据都标记 `STALE`。向用户展示自然语言卡片，不暴露内部 item、segment、host 或检查点标识。\n\n## 写入与恢复纪律\n\n每批写入前回读项目、时间线版本和目标对象，检查前置条件/幂等键/当前审批，只写一个小批次。写后回读并比较计划与实际，保存证据和检查点后再继续。\n\n- 写入前超时：确认未写，再重试。\n- 写入后超时：确认已写，不重复创建。\n- 部分或含糊结果：补偿或阻断，不能猜。\n- 用户手工修改：停止覆盖，让旧审批失效。\n- 同一失败签名三次：止损，返回最近安全版本和交接报告。\n\n恢复不得扩大原授权，详见 [继续未完成剪辑](workflows/resume.md)。\n\n## A-roll、声音与字幕顺序\n\n```text\n转写与术语保护\n→ A-roll 决定\n→ 代表样片与批准\n→ 整片 A-roll\n→ 单一对白主轨与声音衔接\n→ 整片字幕\n→ 可选增强\n→ 验证\n```\n\n字幕以真实语音和用户精校稿为真相源，保护数字、小数点、百分号、单位、日期、专名和否定。不要用固定字数代替语义断句；字符预算只做最后画面安全检查。结构页、合成画面和最终文件字幕是不同证据面。\n\n## 画面默认\n\n普通稳剪只用 `A`（人物/主口播）、`B`（屏幕证据优先）、`S`（必要的屏幕+人物）。优先级：隐私 > 屏幕证据 > 人物 > 理解任务 > 字幕 > 新鲜感。\n\n七执行状态、主题、过渡、人脸取景和外部镜头候选只在专业增强按需读取。不要为了“看起来剪过”机械切镜。\n\n## 验证与完成声明\n\nJSON 用小写，用户报告显示大写：`pass / fail / unverified / stale / waived / not_applicable / pending`。\n\n| 证据 | 能证明 | 不能证明 |\n| --- | --- | --- |\n| 项目/时间线回读 | 结构已写入 | 像素正确 |\n| 合成帧 | 代表画面正确 | 编辑器已同步 |\n| 音频测量 | 数值和文件属性 | 人耳自然 |\n| 人类播放 | 覆盖窗口的体验 | 未覆盖窗口也通过 |\n| 样片批准 | 当前策略可扩展 | 最终整片已批准 |\n\n不能看就写 `UNVERIFIED`，不能听也写 `UNVERIFIED`；任何版本或指纹漂移让旧证据变为 `STALE`。\n\n## 与用户沟通和交付\n\n一次任务最多主动发送五次里程碑：项目与策略确认、转写与决定完成、代表样片待确认、整片按批准扩展、时间线可审阅。\n\n最终报告分成：已完成；为保护内容而未执行；分项验证；仍需留意；下一步。不要用内部 ID、哈希或错误堆砌给普通用户。\n\n跨会话命令：\n\n```bash\nnpm run run -- --intent \"用马甲稳剪当前口播\" --dry-run --json\nnpm run status -- --run-id <run-id>\nnpm run review -- --run-id <run-id>\nnpm run approve-decisions -- --run-id <run-id> --decision-id <decision-id>\nnpm run approve-sample -- --run-id <run-id>\nnpm run request-revision -- --run-id <run-id> --direction natural\nnpm run resume -- --run-id <run-id> --timeline-revision <fresh-revision> \\\n  --reconcile-outcome <blocker-specific-outcome> \\\n  --evidence-ref <logical:readback-evidence> [--checkpoint-id <checkpoint-id>]\nnpm run report -- --run-id <run-id>\n```\n\n这些命令记录计划和状态，不会假装已经修改真实 ChatCut 项目。`resume` 必须使用刚回读的时间线版本；阻断运行还必须提供与阻断原因匹配的对账证据，写入类阻断需要已落盘检查点。\n\n## 当前真实环境边界\n\nv1.6.0 的数据合同、风险规则、状态转换、匿名模拟会话和本地命令已通过自动检查。模拟证据以 `provenance=simulation` 明示，不能升级真实声明。仓库真实验证报告当前为 `stableClaimEligible=false`；真实项目写入、合成画面、人耳试听和匿名生产样本仍为 `UNVERIFIED`。\n\n因此可以说“离线流程和恢复模拟已验证”，不得说“一键稳定剪辑已经生产验证”，不得把模拟场景写成真实案例，也不得把旧版本证据外推到当前工具面。\n\n## 实战经验库硬闸\n\n更新本 Skill 或处理命中标签的真实任务前：\n\n1. 完整读取 [`03-实操迭代与踩坑/README.md`](03-实操迭代与踩坑/README.md)。\n2. 完整读取命中案例，不只读摘要。\n3. 在 [`03-实操迭代与踩坑/迭代记录.md`](03-实操迭代与踩坑/迭代记录.md) 追加采用、拒绝、证据缺口、新 canary 和验证回执。\n4. 一次事故不直接晋升全局规则；至少需要独立复验、反例和回滚动作。\n5. 公开仓只写脱敏事实。\n\n稳定方法按需读取 [`02-剪辑方法手册/`](02-剪辑方法手册/README.md)。高级机器门禁由 `rules/`、`schemas/`、`src/`、`scripts/`、`fixtures/` 与 `tests/` 维护。\n\n## 版本记录\n\n- **v1.6.0（2026-08-11）**：一句话入口、三模式四方案、运行清单、风险决定、代表样片、审批/改样、证据分离恢复与交付主命令；真实端到端仍为 `UNVERIFIED`。\n- **v1.5.0（2026-07-25）**：受治理的可选知识与镜头候选层。\n- **v1.4.1（2026-07-24）**：视觉决定合同和追加式实战经验库。\n\n完整历史见 [CHANGELOG.md](CHANGELOG.md)。\n\n## 作者 / 联系\n\n**马甲（@maojiebc）** · 超级马甲\n\n- Email：[m9224@163.com](mailto:m9224@163.com)\n- GitHub：[github.com/maojiebc](https://github.com/maojiebc)\n- ClawHub：[clawhub.ai/p/maojiebc](https://clawhub.ai/p/maojiebc)\n- X：[@maojiebc](https://x.com/maojiebc)\n- 小红书：[超级马甲](https://xhslink.com/m/4fQMJeHHWKC)\n- 微信公众号：[超级马甲](https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzY5NzIzODk2NA==#wechat_redirect)\n\n> 这份 Skill 来自 14 年用户运营、数据与内容生产实践。\n\nFile v1.6.0:01-从这里开始/README.md\n\n# 从这里开始\n\n这个目录是给维护者看的，不要求先懂代码。\n\n## 我现在想做什么\n\n| 你的目的 | 去哪里 | 怎么维护 |\n| --- | --- | --- |\n| 记录一次真实剪辑里新踩的坑 | [实操迭代与踩坑](../03-实操迭代与踩坑/README.md) | 先追加案例，再在迭代记录里写这次采用了什么 |\n| 查字幕、转场、双画面、人脸取景怎么做 | [剪辑方法手册](../02-剪辑方法手册/README.md) | 找对应主题；只有跨案例验证过的经验才写进这里 |\n| 看项目为什么这样设计、下一步做什么 | [项目设计与路线图](../04-项目设计与路线图/README.md) | 维护路线图、架构、迁移说明和规则吸收记录 |\n| 修改主题颜色或版式坐标 | `assets/` | 这是半人工、半程序区，修改后必须运行全量验证 |\n| 修改机器必须遵守的硬规则 | `rules/` | 同时补 schema、正反 fixture 和测试，不直接手改一句就结束 |\n| 修改安装后 Agent 的总行为 | `SKILL.md` | 先读实操案例；修改后检查所有链接和版本面 |\n| 修改一句话入口或主流程 | `agents/`、`workflows/`、`src/orchestration/` | 同步入口路由、状态、风险、样片、恢复和交付测试 |\n| 修改稳剪/快剪/长片/录屏默认值 | `profiles/` | 默认只能保持或收紧安全边界，并更新匿名正反例 |\n| 修改跨会话状态和报告 | `schemas/runtime/`、`templates/runtime/` | 同步 Schema、模板、CLI、故障场景和兼容检查 |\n| 发布一批正式更新 | `CHANGELOG.md`、`package.json` | 经验积累不等于发版；达到一批后再统一升级版本 |\n\n## 四个中文维护区\n\n1. `01-从这里开始/`：人类入口和维护地图。\n2. `02-剪辑方法手册/`：已经相对稳定、下次可以直接复用的方法。\n3. `03-实操迭代与踩坑/`：真实案例、失败路径、ChatCut 产品问题和迭代回执。\n4. `04-项目设计与路线图/`：架构、路线图、迁移说明和规则吸收记录。\n\n## 英文目录是什么\n\n这些目录主要给程序、测试和安装工具使用。平时阅读仓库时可以先忽略：\n\n| 目录 | 用途 | 普通维护是否常改 |\n| --- | --- | --- |\n| `src/` | 核心程序实现 | 否 |\n| `scripts/` | 校验和命令行工具 | 否 |\n| `schemas/` | JSON 数据合同 | 否 |\n| `fixtures/` | 测试用匿名样例 | 否 |\n| `tests/` | 自动化回归测试 | 否 |\n| `templates/` | 给用户复制的模板 | 偶尔 |\n| `agents/` | 安装后的默认一句话入口 | 偶尔 |\n| `workflows/` | 稳剪、快剪、专业增强和恢复说明 | 偶尔 |\n| `profiles/` | 四套可复现剪辑默认方案 | 谨慎 |\n| `assets/` | 版式、主题和视觉资产 | 按需 |\n| `rules/` | 机器硬规则 | 谨慎 |\n\n## 最常用的维护流程\n\n```text\n真实任务出现问题\n  ↓\n写入 03-实操迭代与踩坑\n  ↓\n在不同任务中重复验证\n  ↓\n晋升到 02-剪辑方法手册\n  ↓\n可以机器判定时，再进入 rules + fixtures + tests\n  ↓\n积累到一批后统一发正式版本\n```\n\n原则只有一句：案例先积累，方法后晋升，硬规则最后机器化。\n\n## V1.6 主流程改动后的最小检查\n\n```bash\nnpm run validate:runtime-contracts\nnpm run test:orchestration\nnpm run test:risk-policy\nnpm run test:run-state\nnpm run test:starter-prompts\nnpm run smoke:one-click:fake\nnpm run validate:docs-routing\nnpm run verify\n```\n\n真实 ChatCut 验证结果单独写入 `reports/live-canary-v1.6.0.json`。匿名模拟通过不能把真实状态从 `UNVERIFIED` 改为通过。\n\nFile v1.6.0:02-剪辑方法手册/README.md\n\n# 剪辑方法手册\n\n这里保存已经经过复验、下一次任务可以直接读取的方法。真实事故和未决问题放在 [实操迭代与踩坑](../03-实操迭代与踩坑/README.md)，不要混写。\n\n## 按问题找手册\n\n| 遇到的问题 | 读取 |\n| --- | --- |\n| 不知道整片应该按什么顺序做 | [01-逐片执行手册](01-逐片执行手册.md) |\n| 人物、录屏、圆窗和分栏怎么排 | [02-双画面版式](02-双画面版式.md) |\n| 字幕底板、品牌色、图表色怎么选 | [03-主题配色](03-主题配色.md) |\n| 要不要加标题卡、步骤卡、关键词强调 | [04-信息块与画面任务](04-信息块与画面任务.md) |\n| 转场生硬、闪黑、节奏太快 | [05-过渡动效](05-过渡动效.md) |\n| 人脸不居中、圆窗拉伸、出现黑边 | [06-人脸取景与三层合成](06-人脸取景与三层合成.md) |\n| 字幕错词、断句、长字幕、词表 | [07-字幕与术语](07-字幕与术语.md) |\n| 开头不抓人、中段拖、平台节奏不同 | [08-留存结构与平台路由](08-留存结构与平台路由.md) |\n| ChatCut 编辑器、云端渲染、分页引擎有差异 | [09-ChatCut宿主实测](09-ChatCut宿主实测.md) |\n| 连接失败、转写卡住、任务接力恢复 | [10-故障恢复](10-故障恢复.md) |\n| 查 198 份剪辑百科，或调用外部 Remotion 镜头配方 | [11-外挂知识包与镜头配方](11-外挂知识包与镜头配方.md) |\n\n## 维护原则\n\n- 单次事故先写案例，不直接升级为通用方法。\n- 至少经过重复实例和 E2/E3 证据，再晋升到本目录。\n- 方法要写适用范围、反例和失败后的回滚动作。\n- 能机器判定的稳定方法，才进一步进入 `rules/`。\n\nFile v1.6.0:03-实操迭代与踩坑/README.md\n\n# 实战经验库\n\n这个目录保存真实 ChatCut 生产任务中出现的事实、失败链、产品问题、绕行方案和证据。它不是正式规则的堆放区，也不是只写成功经验的“战报”。\n\n目标是解决两个问题：\n\n1. 不用每出现一个新坑就发布新的 Skill 正式版本。\n2. 下一次迭代不能从零开始，必须读取旧案例，并留下“读过以后做了什么决定”的记录。\n\n## 目录契约\n\n```text\n03-实操迭代与踩坑/\n  README.md\n  迭代记录.md\n  案例/\n    YYYY-MM-DD-<案例名称>.md\n```\n\n- `案例/`：追加式原始案例。保留时间线、尝试、失败、修复、验证和未决问题。\n- `迭代记录.md`：每次 Skill 迭代或命中案例标签的生产任务的读取回执。\n- `02-剪辑方法手册/`：从多个案例中晋升出的稳定做法。\n- `rules/`：可机器执行、带反例和回滚条件的 hard policy。\n\n## 开工读取协议\n\n真实 ChatCut 任务或 Skill 迭代开始时：\n\n1. 读取本文件。\n2. 按 frontmatter 的 `tags`、`chatcut_surfaces`、`failure_signatures` 找到相关案例。\n3. 完整读取案例，不能只读执行摘要。\n4. 把读取结果写入 `迭代记录.md`：\n   - 读取了哪些案例；\n   - 哪些结论本次采用；\n   - 哪些结论因版本、证据或任务差异被拒绝；\n   - 新增了什么 canary；\n   - 哪些结论有资格晋升。\n\n## 收工写入协议\n\n任务结束时：\n\n1. 新事实优先追加到已有案例；不同根因或不同产品面才新建案例。\n2. 记录实际结果，不把计划写成结果。\n3. 区分证据等级：\n   - `E0`：推测或代理内部判断，没有用户/像素/回读证据。\n   - `E1`：结构回读、工具返回、DOM/日志。\n   - `E2`：用户在编辑器的可见观察，或本地源文件抽帧/试听。\n   - `E3`：ChatCut 合成帧、最终导出文件、可复算媒体指标。\n4. 记录 `expected / actual / impact / workaround / requested_fix`，让产品经理和开发可直接转为 issue。\n5. 记录证据缺口。没有保存编辑器截图时，要明确写“用户观察，未留像素附件”，不能冒充 E3。\n\n## 规则晋升\n\n一条案例结论进入 `02-剪辑方法手册/` 至少满足：\n\n- 两个独立案例，或同一问题在不同资产/实例上重复；\n- 有 E2/E3 证据；\n- 有适用范围和反例；\n- 有失败时的回滚动作；\n- 不与官方 ChatCut skill 和当前工具 schema 冲突。\n\n进入 `rules/` 还必须：\n\n- 可机器判定；\n- 有正/反 fixture；\n- 有稳定 rule ID；\n- 有 owner、回滚和版本漂移策略。\n\n## 修订与纠错\n\n- 案例原则上不覆盖旧结论。\n- 事实错误可原位修复，但必须在“修订记录”说明原因。\n- 产品版本变化使旧结论失效时，新增 `supersedes` 案例，并在旧案例顶部链接新案例。\n- 不删除仍有历史解释价值的失败路径。\n\n## 公开仓脱敏\n\n禁止提交：\n\n- ChatCut 项目 ID、资产 ID、签名 URL、短期导入 token；\n- 用户本机绝对路径；\n- 原始字幕全文、人物画面和私有截图；\n- 品牌私词表、真实业务敏感数字；\n- OAuth、API key、邮箱、手机号等标识。\n\n允许提交：\n\n- 匿名化帧数、时长、轨道角色和 source offset；\n- 错误字符串、工具行为、验证流程；\n- 脱敏标题和通用 ASR 错误模式；\n- 对 ChatCut 产品团队有复现价值的 expected/actual。\n\n## 第一个案例\n\n- [AI Hero 母片精修：编辑器黑底、云端帧正常与真实 Hyperframes 替换](案例/2026-07-24-AI-Hero母片精修.md)\n\nFile v1.6.0:04-项目设计与路线图/README.md\n\n# 项目设计与路线图\n\n这里解释项目为什么这样设计，以及后续准备往哪里走。\n\n| 内容 | 文件 |\n| --- | --- |\n| V1.6 一句话稳剪主流程、四套默认方案和安全护栏 | [系统架构](系统架构.svg) |\n| 8 套口播主题视觉总览 | [主题预览](主题预览.png) |\n| 当前合同和 fail-closed 基线 | [契约基线](契约基线.md) |\n| 老配置如何迁移 | [V1.3.1迁移指南](V1.3.1迁移指南.md) |\n| 外部 AI 剪辑经验如何吸收或拒绝 | [AI剪辑规则吸收记录](AI剪辑规则吸收记录.md) |\n| 已完成、下一步和研究项 | [公开路线图](公开路线图.md) |\n\n当前路线图把“一句话产品层离线已交付”和“真实 ChatCut 端到端仍为 `UNVERIFIED`”分开记录；不要用匿名模拟结果替代真实写入、合成画面或人耳试听证据。\n\n如果只是记录一次剪辑任务的新问题，请去 [实操迭代与踩坑](../03-实操迭代与踩坑/README.md)，不要写到路线图里。\n\nFile v1.6.0:assets/theme-kit/README.md\n\n# 9:16 口播视频配色与底图系统\n\n这是一套面向 1080 × 1920 竖屏口播内容的设计资产包。8 套配色均已拆成原始色板、语义色、SVG 底图、布局坐标和可运行的 HTML/CSS/JS 组件；PNG 与海报属于本地生成物，不随 source 包预生成。\n\n## 先看什么\n\n1. 直接打开 `index.html`：查看 8 套主题总览。\n2. 打开 `examples/single.html`：切换主题、布局、文案和安全区。\n3. Codex 开始改代码前先读取根目录 `AGENTS.md`。\n4. 颜色以 `tokens/themes.json` 为唯一数据源，布局以 `tokens/layouts.json` 为唯一数据源。\n\n## 快速接入\n\n```html\n<link rel=\"stylesheet\" href=\"tokens/themes.css\">\n<link rel=\"stylesheet\" href=\"components/portrait-talk-card.css\">\n<div id=\"card\"></div>\n<script src=\"components/portrait-talk-card.js\"></script>\n<script>\n  PortraitTalkThemeKit.mount(\"#card\", {\n    theme: \"sea-salt-cyan\",\n    layout: \"fresh-frame\",\n    showSubtitle: true,\n    copy: {\n      title: \"会员不是折扣人群，\\n而是经营资产\",\n      emphasis: \"经营资产\",\n      footer: \"先理解用户，再设计权益\"\n    }\n  });\n</script>\n```\n\n组件画布固定为 1080 × 1920。预览时可以使用 CSS `transform: scale(...)` 缩放，导出时按原尺寸截图或录制。\n\n## 替换口播人物\n\n组件内 `.talk-card__speaker` 是人物安全区。透明背景视频建议加 `is-cutout`：\n\n```html\n<div class=\"talk-card__speaker is-cutout\">\n  <video class=\"talk-card__speaker-media\" src=\"speaker.webm\" autoplay muted loop playsinline></video>\n</div>\n```\n\n普通矩形视频去掉 `is-cutout`，组件会按主题自动加底色、边框和圆角。\n\n## 文件结构\n\n- `AGENTS.md`：给 Codex 的项目级约束。\n- `tokens/themes.json`：8 套主题、原始色板和语义色。\n- `tokens/layouts.json`：8 个布局的 1080 × 1920 坐标。\n- `tokens/themes.css` / `tokens/themes.ts`：前端可直接使用的变量与类型。\n- `assets/backgrounds/*.svg`：可编辑矢量底图。\n- `assets/backgrounds-png/*.png`：运行 `scripts/render-backgrounds.py` 后生成的 1080 × 1920 纯底图（可选，不随 source 包提交）。\n- `assets/demo-posters/*.png`：可选的本地成品预览输出，不是 release 必需资产。\n- `assets/overlays/safe-area.svg`：字幕和底部 UI 保护区参考。\n- `components/portrait-talk-card.*`：无依赖 HTML 组件。\n- `examples/PortraitTalkCard.tsx`：React 示例。\n- `scripts/check-contrast.mjs`：检查关键文字与按钮对比度。\n\n## 主题选择\n\n| 主题 | 适合内容 | 默认布局 |\n|---|---|---|\n| 深空蓝 | 数据、技术、AI、方法论 | 斜切科技 |\n| 墨绿金 | 业务复盘、经营、策略 | 商务分栏 |\n| 暖灰橙 | 干货、培训、日常表达 | 居中编辑 |\n| 午夜紫 | 趋势、创新、产品发布 | 轨道聚焦 |\n| 极简黑白 | 知识卡片、观点、问答 | 极简长栏 |\n| 海盐青 | 用户运营、会员增长、服务 | 清新框景 |\n| 大地棕 | 商业思考、案例、品牌故事 | 大地带状 |\n| 活力青柠 | 活动、会员日、上新传播 | 轻快角落 |\n\n## 校验\n\n```bash\nnode scripts/check-contrast.mjs\npython3 -m http.server 8000\n```\n\n然后访问本地的 `index.html` 和 `examples/single.html`。\n\nFile v1.6.0:README.md\n\n# ChatCut口播 · 马甲实战版\n\n![Skill Version](https://img.shields.io/badge/skill-v1.6.0-blue)\n[![skills.sh](https://skills.sh/b/maojiebc/majia-chatcut-koubo)](https://skills.sh/maojiebc/majia-chatcut-koubo)\n\n**ChatCut口播 · 马甲实战版｜一句话稳剪与可恢复主流程**\n\n> 给普通创作者的一句话入口：先安全清理口播、做代表样片，确认后再扩展整片，最后交回可继续编辑的 ChatCut 时间线。\n\n![v1.6.0 一句话稳剪流程](https://raw.githubusercontent.com/maojiebc/majia-chatcut-koubo/main/04-项目设计与路线图/系统架构.png)\n\n## 30 秒开始\n\n安装后，在支持 Skill 的助手里说：\n\n```text\n$majia-chatcut-koubo 用马甲稳剪当前口播\n```\n\n它会先自动读取当前项目、时间线和素材；只有无法唯一确定时才问一个聚焦问题。随后完成低风险口误清理与代表样片。你确认样片后，它才会把相同策略扩展到整片，并依次处理声音衔接、基础字幕和验证。\n\n默认结果是一个可继续手调的 ChatCut 时间线，不是自动发布的视频文件。\n\n本地开发者也可以查看入口。以下命令面向 GitHub 源码 clone；SkillHub 的轻量分发包会省略测试、fixture 和纯 CI validator，完整验证仍以同一提交的源码仓与 CI 为准：\n\n```bash\nnpm ci\nnpm run doctor\nnpm run koubo -- --help\nnpm run smoke:one-click:fake\n```\n\n## 默认会做什么\n\n- 识别“稳剪、快剪、专业增强、继续上次、只审核”等自然语言意图。\n- 选择四套可复现默认方案之一，并记录本次选择。\n- 保护数字、专名、否定、论证链和用户已经确认的设计。\n- 只自动处理有证据的低风险项；中风险进入样片，高风险必须由你决定。\n- 按片长选择开头、复杂切点、重说、停顿、隐私和片尾代表窗口。\n- 样片确认后，按“小批写入 → 回读 → 检查点”的方式继续。\n- 先锁定 A-roll，再做声音平滑与整片字幕。\n- 分开报告结构、画面、音频测量、人耳试听、隐私和用户确认状态。\n\n## 默认不会做什么\n\n- 不自动重排观点或把钩子搬到前面。\n- 不自动删除整句、数字、专名、否定附近内容。\n- 不自动添加音乐、动态图形、补充画面或生成素材。\n- 不覆盖用户手工修改；时间线变化会让旧样片确认失效。\n- 不把“工具返回成功”写成“画面和声音已经通过”。\n- 不自动导出，更不会自动发布用户视频。\n\n## 三种模式，四套默认方案\n\n| 你怎么说 | 默认方案 | 适合 | 关键边界 |\n| --- | --- | --- | --- |\n| “用马甲稳剪” | `balanced-stable` | 日常单人口播 | 保持原顺序，节奏自然 |\n| “快剪这条短口播” | `tight-short` | 30–90 秒短片 | 更紧，但钩子和重排仍需确认 |\n| “做专业增强” | 按素材选择 | 长片或录屏 | 高级画面只给候选，不擅自执行 |\n| 长片信任表达 | `trust-longform` | 5–30 分钟 | 保护案例、数字和论证链 |\n| 录屏演示 | `screen-demo` | 屏幕 + 人物 | 屏幕证据优先，隐私必须验证 |\n\n四套方案的机器合同位于 [`profiles/`](profiles/)。个人方案只能保持或收紧安全边界，不能放宽高风险审批。\n\n## 你会看到的主流程\n\n```text\n一句话需求\n→ 项目与素材检查\n→ 转写与低/中/高风险决定\n→ 代表样片\n→ 你确认或要求调整\n→ 整片 A-roll\n→ 声音平滑与字幕\n→ 分项验证\n→ 可编辑时间线 + 交付报告\n```\n\n典型样片确认卡只说人话：\n\n```text\n代表样片已做好\n已处理：明显口误、失败重说、批准范围内的长停顿\n已保护：数字、专名、否定和需要你决定的内容点\n未执行：重排、音乐、动态图形、补充画面、导出\n请选择：继续整片 / 再自然一点 / 再紧一点 / 查看高风险项\n```\n\n## 中断后怎么继续\n\n每次运行都有独立清单、决定记录和检查点。恢复前会先比较项目与时间线版本：\n\n- 写入前超时：回读确认没写，再安全重试。\n- 写入后超时：回读确认已经写入，不重复创建。\n- 部分写入：补偿或停在最近检查点，等待核对。\n- 用户手工修改：停止覆盖，旧审批标记为 `STALE`。\n- 同一失败连续三次：止损并交接，不无限重试。\n\n开发者命令：\n\n```bash\nnpm run run -- --intent \"用马甲稳剪当前口播\" --dry-run --json\nnpm run status -- --run-id <run-id>\nnpm run review -- --run-id <run-id>\nnpm run approve-decisions -- --run-id <run-id> --decision-id <decision-id>\nnpm run approve-sample -- --run-id <run-id>\nnpm run request-revision -- --run-id <run-id> --direction natural\nnpm run resume -- --run-id <run-id> --timeline-revision <fresh-revision> \\\n  --reconcile-outcome <blocker-specific-outcome> \\\n  --evidence-ref <logical:readback-evidence> [--checkpoint-id <checkpoint-id>]\nnpm run report -- --run-id <run-id>\n```\n\n`resume` 不会用清单里的旧版本号自证安全：必须先从 ChatCut 重新回读时间线版本；处于阻断状态时，还必须提交与阻断原因匹配的对账结果和证据。写入类阻断需要最近的已落盘检查点。\n\n`doctor` 在源码 clone 中会运行匿名运行时 fixture 审计；在注册表轻量包中会明确返回 `verificationScope=distribution-package` 与 `runtimeContracts.status=not_packaged`，不会伪造一次本地全量测试。\n\n项目运行记录默认放在项目内 `.majia-koubo/`，已被 Git 忽略，不会进入公开包。\n\n## 完成状态不是一个总勾\n\n交付报告分别使用以下状态：\n\n- `PASS`：有对应证据并通过。\n- `FAIL`：有证据且未通过。\n- `UNVERIFIED`：当前没有足够证据。\n- `STALE`：证据对应的时间线或方案已经变化。\n- `WAIVED`：用户明确豁免。\n- `NOT_APPLICABLE`：本次不适用。\n\n结构回读只能证明结构；合成帧才能证明画面；音频测量不能替代人耳试听；样片确认也不能替代最终播放确认。\n\n## 当前验证边界\n\n| 能力 | v1.6.0 状态 |\n| --- | --- |\n| 运行合同、四套方案、风险规则、状态转换 | `PASS`（离线自动检查） |\n| 超时前/后、部分写入、手工修改保护 | `PASS`（带结构化模拟证据的匿名会话） |\n| 一句话路由与本地命令 | `PASS`（离线自动检查） |\n| 真实 ChatCut 工具面与项目写入 | `UNVERIFIED` |\n| 真实合成画面、人耳试听、匿名生产样本 | `UNVERIFIED` |\n\n本仓库当前没有可用的真实 ChatCut 会话和匿名媒体，因此 [`reports/live-canary-v1.6.0.json`](reports/live-canary-v1.6.0.json) 如实记录为 `stableClaimEligible=false`。离线模拟不能替代真实端到端证据；在至少 5 条真实匿名样本、三种长度、三种内容形态和恢复/手改保护全部通过前，本项目不会把“一键稳定剪辑已经生产验证”写成事实。\n\n## 与 ChatCut 官方能力怎么分工\n\nChatCut 官方 15 个 Skill 负责项目操作、素材导入、转写、口播基础方法、验证、音乐、动效、生成、导出和产品帮助。本包不复制它们的参数教程，只负责：\n\n- 把一句话需求拆成可恢复的阶段；\n- 给出安全默认、风险边界和样片策略；\n- 保护用户已经确认的内容与设计；\n- 把不同证据分开记录并形成交付报告。\n\n完整分工见 [`workflows/official-skill-map.md`](workflows/official-skill-map.md)。官方工具名称和参数始终以当前 ChatCut 工具说明为准。\n\n## 安装\n\n```bash\n# GitHub CLI\ngh skill install maojiebc/majia-chatcut-koubo\n\n# skills.sh\nnpx skills add maojiebc/majia-chatcut-koubo\n\n# ClawHub\nnpx clawhub install majia-chatcut-koubo\n```\n\n安装标识始终是 `majia-chatcut-koubo`，展示名是“ChatCut口播 · 马甲实战版”。\n\n## 开发与发布检查\n\n要求 Node 24.18.0：\n\n```bash\nnpm ci\nnpm run verify\nnpm audit --audit-level=high\n```\n\n分层检查：\n\n```bash\nnpm run validate:runtime-contracts\nnpm run test:orchestration\nnpm run test:risk-policy\nnpm run test:run-state\nnpm run test:starter-prompts\nnpm run test:cli\nnpm run smoke:one-click:fake\nnpm run validate:docs-routing\nnpm run validate:live-claim\n```\n\n旧能力仍保留：Rule Registry、Creator OS IR、SRT 文本桥、七执行状态、预览审批、可恢复写入、媒体检查、外挂知识包与视觉候选治理。它们是高级底座，不再占据普通用户首屏。发布态字幕检查仍需显式配置根目录：\n\n```bash\nnode scripts/validate-caption-pages.mjs \\\n  --strict \\\n  --profile <profile.source.json> \\\n  --root <profile-config-root> \\\n  --input <captions.json>\n```\n\n工程顺序和真实验证闸见[公开路线图](04-项目设计与路线图/公开路线图.md)，历史升级约束见 [V1.3.1 迁移指南](04-项目设计与路线图/V1.3.1迁移指南.md)。\n\n## 维护入口\n\n| 你要做的事 | 入口 |\n| --- | --- |\n| 第一次维护，不知道改哪里 | [01-从这里开始](01-从这里开始/README.md) |\n| 查字幕、转场、双画面和人脸取景 | [02-剪辑方法手册](02-剪辑方法手册/README.md) |\n| 记录真实任务的新坑 | [03-实操迭代与踩坑](03-实操迭代与踩坑/README.md) |\n| 看架构、路线图和迁移说明 | [04-项目设计与路线图](04-项目设计与路线图/README.md) |\n\n目录职责：\n\n```text\nagents/       安装后的默认一句话入口\nworkflows/    稳剪、快剪、专业增强、恢复和官方分工\nprofiles/     四套可复现默认方案\nschemas/      数据合同\ntemplates/    匿名示例与交付模板\nsrc/          路由、状态、风险、检查点和命令\nscripts/      自动检查与离线冒烟\nfixtures/     匿名正反例和故障场景\nreports/      脱敏真实验证状态\n```\n\n本地个人词表、项目路径和真实业务内容只放本机配置，不进入公开仓。完整维护地图见 [`01-从这里开始/README.md`](01-从这里开始/README.md)。\n\n## 版本记录\n\n**V1.6.0（2026-08-11）** — 新增一句话入口、三种模式、四套默认方案、`run/status/review/approve-decisions/approve-sample/request-revision/resume/report` 主流程、运行清单、决定记录、检查点、六维样片指纹、恢复协议和证据分离交付报告；新增 11 个匿名故障场景与真实验证声明门禁。真实 ChatCut 端到端仍为 `UNVERIFIED`。\n\n**V1.5.0（2026-07-25）** — 新增受治理的可选知识与镜头候选层；外部资源只能扩大候选，不能覆盖内容真相、隐私、审批或证据规则。\n\n**V1.4.1（2026-07-24）** — 新增视觉决定合同、追加式实战经验库和迭代前完整回读协议。\n\n完整历史见 [CHANGELOG.md](CHANGELOG.md) 或 [GitHub Releases](https://github.com/maojiebc/majia-chatcut-koubo/releases)。\n\n## 作者 / 联系\n\n**马甲（@maojiebc）** · 超级马甲\n\n如果这份 Skill 帮到你，欢迎交流踩坑、提需求或报问题：\n\n| 渠道 | 链接 |\n| --- | --- |\n| Email | [m9224@163.com](mailto:m9224@163.com) |\n| GitHub | [github.com/maojiebc](https://github.com/maojiebc) |\n| ClawHub | [clawhub.ai/p/maojiebc](https://clawhub.ai/p/maojiebc) |\n| X | [@maojiebc](https://x.com/maojiebc) |\n| 小红书 | [超级马甲](https://xhslink.com/m/4fQMJeHHWKC) |\n| 微信公众号 | [超级马甲](https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzY5NzIzODk2NA==#wechat_redirect) |\n\n> 这份 Skill 来自 14 年用户运营、数据与内容生产实践。\n\nFile v1.6.0:templates/local-config-example/README.md\n\n# 本地个人层模板（local-config-example）\n\n把本目录整体复制为 `~/.config/majia-chatcut-koubo/`，装进你自己的数字与偏好。skill 开工时会探测该目录：**存在则叠加在本包的通用规则之上**；不存在就只用包内通用值。本地层**永不进 git**、永不进公开仓——品牌词、真实业务数字、个人实测坐标全部放这里。\n\n```\n~/.config/majia-chatcut-koubo/\n  profile/            个人 operating profile(实测版式/字幕/音频数字);同名键覆盖包内\n                      assets/compositions.json 与模板默认值;一版一文件,升版不覆盖旧版\n  terminology.json    个人词表(机器读):validator 用 --terms 指向它\n  terminology.md      个人词表(人读版,可选):维护心得、证据记录\n  aesthetics.md       个人审美基线:过渡手感、构图偏好、保护基线清单\n  local-notes.md      个人补充护栏:私有工作流衔接、平台账号惯例、个人路径\n```\n\n对应关系：\n\n| 本地文件 | 覆盖/叠加的公开资产 | 用法 |\n| --- | --- | --- |\n| `profile/*.json` | `templates/operating-profile.template.json` 起模；同名键覆盖 `assets/compositions.json` 坐标 | 使用 source schema；剪辑开工先读；`validate-caption-pages.mjs --profile` 指向它 |\n| `terminology.json` | `templates/terminology.template.json` 起模 | `validate-caption-pages.mjs --terms` 指向它 |\n| `aesthetics.md` | `SKILL.md` 红线之上的个人裁决面 | 审美分歧时代理先读它再问你 |\n| `local-notes.md` | 无（纯个人层） | 写不适合进公开包的一切个人惯例 |\n\n例子文件都带注释，替换成你的内容即可。\n\nProfile 可以用相对 `extends` 继承一个父文件；每个路径都按**声明它的那一层文件**解析。数组整体替换，普通对象递归合并。叶 profile 必须自己声明 `status` 和完整 `provenance`，不能继承父层的项目/时间线可信身份。\n\n发布前先解析并检查来源：\n\n```bash\nnode src/cli/resolve-profile.mjs \\\n  --profile ~/.config/majia-chatcut-koubo/profile/<你的-profile>.json \\\n  --root ~/.config/majia-chatcut-koubo \\\n  --strict \\\n  --out ~/.config/majia-chatcut-koubo/generated/profile.resolved.json \\\n  --trace ~/.config/majia-chatcut-koubo/generated/profile.merge-trace.json\n```\n\n生成的 resolved 文件不含 `extends`，trace 可以追到每个字段来自哪一层。\n输出只能留在 `--root` 内，且可能包含项目级标识；两类默认文件名已在\n`.gitignore` 中排除。旧 profile 可先不加 `--strict` 做只读迁移检查，但\n`contractStatus=migration-incomplete` 时不会写出 resolved 文件。\n\nFile v1.6.0:_meta.json\n\n{\n  \"ownerId\": \"kn71njkqkab6a75db7hqb6ekz982jd29\",\n  \"slug\": \"majia-chatcut-koubo\",\n  \"version\": \"1.6.0\",\n  \"publishedAt\": 1786414182481\n}\n\nFile v1.6.0:02-剪辑方法手册/01-逐片执行手册.md\n\n# 逐片执行手册\n\n批量切片与逐片精修的执行契约、A-roll 删减增量、验证方法学与验收门禁。SKILL.md 五条第一性原则是本手册的上位法。\n\n## 一片一闭环\n\n一次只处理一个切片，按以下顺序完成后再进下一片。不得同时铺开多片修改。\n\n### 1. 冻结与盘点\n\n- 读 active timeline、所有轨道、字幕源、FX 和素材；记录 `timelineEnd`、`outroStart`、主音轨、录屏轨、人物轨、框线轨。\n- 「不动结构」时冻结内容清单（revision、源区间/切点、顺序、时长/速度、字幕时序、主音频映射）；有已验收参考时同时冻结视觉清单（状态序列、每个转场的方向/区间/时长/实现档、MG/FX owner）。\n- 列出所有可见 item/FX 的 owner；旧白块、重复人物、未知 MG/FX、跨片尾装饰和测试 probe 先入删除清单。\n\n### 2. 建状态表\n\n逐语义段标记 A/B-R/B-L/C1/C2/S/P 七执行状态（语义路由见 `dual-frame-layouts.md`）。P 是独立不透明 redaction owner，可与叙事状态重叠；人物大矩形与录屏裁切只承担构图。边界落在气口或现有切点。状态表先行是 SKILL.md 的硬闸：无状态表禁止批量 `edit_item`。\n\n### 3. 原子改画面\n\n- 先拆跨态媒体，再 `validateOnly` 校验整批 deletes/adds/updates，通过后原样提交。\n- 录屏统一应用 profile 裁切与静音；人物 anchor 唯一可听。\n- 框线实例区间必须与宿主状态完全一致；框线入场动画只管进入段（作者基线 `drawFrames=12`、`fadeOut=0`），在宿主区间精确结束。\n- 每次修复后回读整条轨道；框线轨区间并集必须等于需要框线的状态区间并集。\n\n### 4. 精修字幕\n\n按 `captions-terminology.md` 执行；先应用 profile 再立刻回读配置，`maxLines>2` 即停。默认单行，完整语义在安全宽度内确有需要时允许两行；全量页审计，validator 必跑。\n\n### 5. 音频与气口\n\n- 人物 anchor 从第 0 帧可听；先测 integrated/short-term LUFS、true peak 与噪声底再决定增益。重复轨优先 mute/disable；只有宿主无此能力且已记录兼容证据时才降级到 `-60dB`。片尾 click guard 与自然收束分开命名，不用一个固定 fade 覆盖所有情况。\n- 连续片段按 `sourceStart + duration/fps × playbackRate` 对账，防前段静音后段重播。\n- 变速可从 1.2–1.3x 试听（保持音高）；先完成口误与停顿清理再整体提速，1.3x 让情绪失真时局部保留 1.15–1.25x，不全片机械统一。\n- 导出音频样片实听：开头 2 秒、每个源跳转接缝前后 1–1.5 秒、最后一句。**轨道结构连续≠听感连续**；gain/source 参数正确不算通过，必须有实听或电平证据。\n- 机械检查：`ffprobe` 时长对账 + `silencedetect`（-38dB）查静音段 + `volumedetect` 首 0.1/0.5/1.0s 窗有声。\n\n### 6. 收尾验收（门禁汇总）\n\n**结构门**：空窗=0、跨态未拆分 item=0、可闻重复轨=0、孤儿 MG/FX=0、未知 override=0、探针残留=0、未分配 redaction owner 的隐私候选=0、`[outroStart,timelineEnd)` 正文 owner=0。\n\n**字幕门**：validator exit=0、三行及以上=0、逐行超限=0、单字卡=0、`<450ms`=0、未批准 `<800ms`=0、繁体=0、已知术语错=0；硬规则读 `rules/policy.json`，数字/专名纠错必须有证据。\n\n**音频门**：首 0.1s 有声、接缝试听通过、片尾无硬截断、无双声。\n\n**像素门**：首帧、每个状态边界 `(N,N+1)` 帧对、过渡 20%/50%/80%、隐私窗口全程、`outroStart−1/0/+1`、最后一帧。无法读取像素时只报 `structure-pass / pixels-unverified`。\n\n**八道硬闸**（历史事故的回归闸门）：\n\n1. **片尾终止审计**：`outroStart` 起除收束 owner 外一切正文装饰必须已结束；逐帧查 `T−1`、`T`、收束中点、最后可见帧。\n2. **第二次出现即事故**：同一可见故障本任务第二次出现，停局部补丁，定位共享资产根因，修复后旧验证全部作废、全实例回归。\n3. **动效行为守恒**：修改已验收参考风格前先建可见行为清单（状态序列/每类形状转换/进入退出）；不得以静态窗、硬切或暗幕替代已存在的连续动画，除非用户明确批准降级。\n4. **首屏暗幕门禁**：第 0 帧至首句落稳，任何顶层包装不得降低脸部亮度或遮人物；需要暗幕/标题页须作为独立视觉段落经用户确认。\n5. **开场实听证据**：0–2 秒必须实际试听或电平检查；只看 gain/source 参数不算通过。\n6. **二维码全时间线扫描**：先全片扫描发现所有候选窗口，再逐 geometry/state 覆盖验证；不能用某一稳定态的通过顶替过渡窗口。\n7. **参考状态表带效果栈**：记录参考片的可见动效类型、持续、进入/退出方式与保护状态，防止只抄到配色。\n8. **全量回归矩阵**：共享 MG/模板/属性一改，所有引用切片各验至少一个相关精确帧，任一失败阻断扩散。\n\n## A-roll 内容（官方之上的增量）\n\n官方 `talking-head-guide` 已覆盖口癖两分法、retake 处理、停顿阈值与 Script 工作流，直接执行官方。以下是增量：\n\n- **一句话原则：删声音比删意思安全；错删信息的代价高于漏留口癖。**\n- 删前保后：句间重说删前版、句内重启只删错误片段、词头卡壳删第一个不完整词头、多次重说保留最后完整版。有证据或用户指定才反向。\n- 风险分级：低（明确空白、纯卡壳、逐字子集）小批处理后抽检；中（单个口头词、短句内重启、0.2–1s 停顿）听前后语境；高（整句、长片段、改写式重说、跑题、专业词附近）逐项核对保留版覆盖独有信息，没证据就保留或交用户。\n- 口播稿只做语义对齐与补漏，不逐字 diff，不用稿件替换说话人未说过的内容。\n- ASR 头尾盲区：完成删减后检查媒体真实开头结尾（开机动作、收尾杂音、伸手关录制）。\n- 候选删除清单≠实际落刀：回读最终时间线并试听实际切点。\n- 笑声、反应、结论后的留白、录屏操作停顿可能是内容，不当普通空白清除。\n- 信息流切片开头问候/自我介绍/铺垫默认删（预判定见 `retention-structure.md`）。\n\n## 批量流水线\n\n1. **切片指令契约**：锁定三要素 = 数量 + 单片时长档 + 目标平台（画幅/字幕位置/时长按 `retention-structure.md` 平台路由）。\n2. **源级资产单次化**：源转写、术语表、素材盘点全批次共享；逐片重转写视为违规。\n3. **选段人工闸门**：AI 选段在 transcript 面板逐段确认后才进下游。\n4. **模板层冻结**：字幕样式、色板、包装模板在样片确认后冻结；共性错误在模板层修一次全批生效。**但模板层只冻结共性——动效、气口、字幕必须逐片执行验收，逐片精修优先于批量模板化。**\n5. **代表片先行**：至少三类——R1 开场、R2 最复杂合成（录屏+人物+隐私/框线）、R3 最复杂片尾；代表片通过只证明模板可扩散，不豁免逐片门禁。\n6. **回归矩阵**：每受影响切片一行，记录开场 0–2s 实听、状态/动画清单对账、全部边界、隐私窗口、`outroStart` 交接、orphan/probe/未知 override 计数。每个 `pass` 绑定 timeline revision、帧域、准确帧和证据 ID；revision 或共享实现变化后全部转 `stale`。\n7. **重复缺陷计数**：按 `failureSignature + assetVersion + verificationEpoch` 统计；第二次出现走硬闸 2。用户指出的缺陷存为命名 canary（原始时间码+语义边界+失败签名），重定时后按语义边界重定位。\n\n### 多代理调度编制（宿主支持 spawn 时）\n\n- **分片包干**：批量审计按 2–4 片一组分包并行。\n- **单片三线**：精修期一片拆 结构/字幕/音频（或 视觉/脚本/字幕）三条只读审计线并行，修复归主线程；审计线不改项目、不切时间线，只交问题清单+精确 key。\n- **流水线重叠**：当前片收尾时即派下一片 preflight。\n- 子代理结论主动回传，不依赖轮询；审计与修复不并发互踩——结构冻结后再终验，冻结前的证据作废。\n\n## 生成资产纪律（ChatCut 生成工具）\n\n- **成本契约**：单次生成执行前必读工具显示的预估成本，超出用户已授权范围先报价再执行；一次任务预估生成调用 ≥3 次时，合并成一次提案报预估总成本让用户选全部/部分/不加，不逐条打断也不静默连发。\n- **降级预案**：生成服务有高峰期全线超时的历史，关键交付不押生成成功——每个生成资产预先声明降级备选（真实录屏局部放大 / 原始截图 / 静态卡 / 已入库 MG），连续三轮失败即切降级，与「自动修复三轮上限」共用同一出口。\n- **参考图先行（默认必做）**：任何 image/video 生成及风格敏感的 MG 生成前，先上传参考图——已冻结色板的样片帧、品牌截图或已确认切片的代表帧，再下生成 prompt。参考图是官方明示「显著改善结果」的第一杠杆，也是色板的像素级载体。\n- **两段式视频生成**：生成 B-roll 默认先用 image 生成产出首帧静态图并经人工确认，再以该图为起点跑 video 生成。证据类画面（操作演示、数据结果、报错）禁止用生成素材替代，两段式不构成豁免。\n- 生成/自动匹配的 B-roll 存在「重复且泛」的实锤：入片前查重并判断语义贴合，泛素材直接拒绝，不因生成成功就入片。\n\n## 验证方法学\n\n- **双证据原则**：分阶段 `read_project` 结构回读 + `view_timeline_frames` 合成像素，二者都过才算验证。\n- **抽帧法**：状态切换点取 `(N,N+1)` 帧对 + 末帧 + 每状态中段代表帧；过渡另取 20%/50%/80%。多帧下载后 `ffmpeg tile=3x3` 拼 contact sheet 一次目检，省 token 省审批。\n- **钳制帧双读**：时长边界帧号会被钳制到最后可见帧，双读比对一致再采信。\n- **批量网格只筛查**：可疑帧单独请求精确帧并独立复验 ≥2 次；不靠反复重渲染到偶然成功。\n- **写入成功≠落盘**：Zoom/FX 宣称添加成功后必须回读 fx-track 实例确认存在（曾发生批量「已加」实际 0 条）。\n- **素材池≠时间线**：正确资产存在于媒体池不算证据，必须验证 active timeline instance。\n- **变速换算**：`find_transcript` 词级帧未折算 `playbackRate`，精确落刀按源时间换算。\n- **shell 分工**：ffmpeg/ffprobe 只做证据加工（下载、拼图、音频指标、抽源帧对照）；不绕过 ChatCut 交付压平成片。宿主支持编程式批量调用时，读写比应远大于 1。\n- **502/传输错误**：无画面证据时原样重试同一验证请求，不据此改时间线（写操作报错先回读，见 `recovery.md`）。\n\n## 导出与帧率\n\n- 用户开口才导出。短导出授权按措辞记录为「仅指定样片」或「本任务同规格验证性短导出」；范围改变或进完整成片导出，重新确认；授权不跨任务/会话。\n- **帧率以实际文件为准**：30fps 时间线可能 60fps 导出；`submit_export` 区间参数按输出帧域解释，先换算 `exportFrame = round(timelineFrame × exportFps / timelineFps)`，下载后 `ffprobe` 对账真实 fps/帧数/首尾内容。文件名写着 transition 不能替代对画面内容的检查。\n- 未授权导出时如实标注「最终文件未验证」。\n\n## 编辑决策记录\n\n高影响决定（整句删除、重排、结构变更）保留：源区间、目标区间、口述/画面证据、理由、风险、下游依赖、状态。执行后以实际回读覆盖预计值。目的可解释可复查，不强制外部文件。\n\n## 止损与汇报\n\n- 自动修复最多连续三轮，每轮要有新证据和明确变化；三轮后停，保留最近可用版本，报告具体区间与人工检查点。\n- 卡死可产出带证据帧的交接 md 请外部 AI 复核；回件结论仍须本地验算后分级采纳。\n- 汇报：只描述可见结果，不暴露内部 key/id；每个「已完成」都能映射到 revision、帧域、准确帧和证据；`unverified` 明示原因与建议人工检查点，不静默打钩。\n\nFile v1.6.0:02-剪辑方法手册/02-双画面版式.md\n\n# 双画面版式系统\n\n「录屏画面 1 + 主讲人画面 2」的双画面构图：横竖版各 4 套具名版式、语义选型决策器、小窗腾挪规则。坐标真相源 = `assets/compositions.json`（本包内置快照，画布 16:9 1920×1080 / 9:16 1080×1920，均 30fps）。\n\n## 版式总表\n\n| 画幅 | layoutId | 名称 | 主讲人形态 | 何时用 |\n| --- | --- | --- | --- | --- |\n| 16:9 | `landscape-screen-pip-right` | 录屏主画面 · 右下人像 | 330px 正圆 | 横版演示默认态 |\n| 16:9 | `landscape-screen-pip-left` | 录屏主画面 · 左下人像 | 330px 正圆 | 录屏右侧有关键 UI 时避让 |\n| 16:9 | `landscape-split-right` | 左屏右人 · 专业分栏 | 418×784 圆角矩形 | 讲解与表情同等重要 |\n| 16:9 | `landscape-presenter-focus` | 操作讲解 · 人物加强 | 608×742 圆角矩形 | 观点/转折/情绪承接 |\n| 9:16 | `portrait-screen-top-speaker-center` | 上屏下人 · 经典口播 | 480px 正圆居中 | 竖版演示默认态 |\n| 9:16 | `portrait-screen-focus-pip-right` | 录屏放大 · 右下人像 | 400px 正圆 | 密集 UI 定向裁切、避让左侧核心区 |\n| 9:16 | `portrait-split-stack` | 录屏与人 · 上下分屏 | 936×500 矩形 | 手势/上半身表达需保留 |\n| 9:16 | `portrait-speaker-focus-cutout` | 录屏证据 · 人物强表达 | 610×650 透明抠像 | 强观点段（需抠像素材） |\n\n每个版式在 `compositions.json` 里都带 screen/speaker/title/point/subtitle 五个区域的精确坐标与圆角；字幕基线横版 40px、竖版 84px 单行。\n\n## 三态叙事骨架 → 七个执行状态\n\n口播画面在三个叙事态间流转：**A 人物全屏**（钩子/结论/转折/强情绪）、**B 双画面**（演示/操作/数据）、**C 人物加强**（演示段落里的观点承接）。落时间线时把 B、C 各拆成两个可操作状态，并显式加入 S 纯录屏与 P 隐私覆盖——这样能机器检查 owner、合法转向和隐私覆盖，不把圆形、矩形、全屏当作轮播预设：\n\n| 执行状态 | 进入信号 | 退出信号 |\n| --- | --- | --- |\n| **A 全屏人物** | 开场钩子、强转折、重大结论、收尾 | 开始展示必须看清的屏幕证据 |\n| **B-R 右侧圆窗** | 步骤/按钮/字段/数字/连续操作，关键 UI 在左中部 | 关键 UI 移到右侧，或话语转入解释 |\n| **B-L 左侧圆窗** | 关键 UI、鼠标路径或字幕保护区在右侧 | UI 重心换边 |\n| **C1 专业分栏** | 「为什么」「背后的逻辑」等解释段，仍需屏幕上下文 | 回到连续操作，或结论强到应回 A |\n| **C2 人物加强** | 「真正重要的是…」「所以我的结论是…」等观点句 | 进入必须看清的细节操作 |\n| **S 纯录屏** | 密集 UI、连续操作或人物遮挡关键证据；人物隐藏但 anchor 仍唯一可听 | 需要人物陪伴、解释或结论强调 |\n| **P 隐私覆盖** | 检出二维码、账号、手机号、密钥或个人数据 | 敏感内容已离开画面且边界复验通过 |\n\nP 是**独立、不透明、全区间**的 redaction owner，可与叙事状态重叠；人物大矩形与录屏裁切只能改善构图，**不能作为隐私安全保证**。redaction 必须覆盖每个稳定态、全部过渡和边界帧；部分遮挡=失败（ChatCut 端的源头平移优先处置见 `chatcut-field-notes.md` 隐私扫描 SOP）。\n\n**双素材呼吸感**：人物和录屏是两个平等的呼吸主体，各自都应该有放大到全屏/近全屏的时刻——人物升 A、录屏升 S 交替出现，不能只让人物变而录屏永远蹲在窗里。长片（>5 分钟）每幕至少评估一次 S 态机会（关键操作、纯屏幕证据、画面自身有叙事力的段落）；A 与 S 的交替是节奏的上限刺激，不是例外。\n\n### 选型决策顺序（前项可否决后项）\n\n1. **隐私与安全**：二维码、账号、密钥必须先消失。\n2. **屏幕证据**：观众必须看清什么？证据密集优先 B；关键 UI 决定人物在左还是右。\n3. **人物强调**：这句话靠表情/判断/情绪成立吗？解释原因优先 C1，强观点优先 C2，屏幕已无必要证据才升 A。\n4. **字幕负载**：长字幕、连续数字、英文命令占用阅读带宽，保持 B 或克制的 C1。\n5. **新鲜感提醒**：约 30–45 秒无构图变化时触发**复查**——但时间不是自动切换器，连续操作仍需完整证据时有理由保持 B。\n\n### 切换落点与节奏\n\n- 切换只落在**气口或章节边界**，不在句中切。关键句需要放大人物时，在句前气口提前约 0.3–0.6 秒起动，让画面在关键句首个有效音节附近落稳。\n- 相邻两次状态变化之间至少完成一个完整语义单元；常规停留约 4–6 秒以上（A 常见 2–6s，C2 约 4–12s，C1 约 10–25s——样片起点，非硬计时器）。\n- 45–90 秒切片通常 3–5 个状态段，90–120 秒通常 4–7 个；每次人物放大都应对应更重要的一句话，每次缩小都应因为录屏证据更有价值。连续两次只换形状/换边却没有语义变化 = 装饰性抖动，合并。\n- 单一构图连续超过约 25 秒按静态失败复查。\n\n## 状态落地的原子契约\n\n状态表落到时间线时，把每个稳定态写成半开区间 `[startFrame,endFrame)`，同区间的三项视为一个不可拆的提交单元：①录屏层的 rect、fit/crop 与静音状态；②人物层的可见 rect、窗形/蒙版、内部取景与主音频归属；③共享框线/装饰的状态与人物轮廓 knockout。\n\n- **状态表最少字段**：`stateId | [start,end) | 三层参数 | inTransitionId | outTransitionId | privacy | semanticReason`。这也是 SKILL.md「状态表先行」硬闸要求请用户过目的表。\n- **按区间相交审计**，不按 item 起点猜状态：每个媒体 item 必须只命中一个稳定态；同时与两个状态相交时，先在合法气口拆分 item 或把状态边界移到已有切点，再同步三层。禁止先改人物与框线、以后再补录屏。\n- 每个可见的非字幕 item/FX 必须且只能绑定一个 owner（开场/稳定态/过渡/片尾）；装饰层区间不越出宿主状态区间，跨多个宿主就在边界拆实例。owner 不明的旧 MG、probe、孤儿 FX、未知 override 都阻止交付。\n- 宿主没有事务 API 时也按逻辑事务执行：`validateOnly → 保存修改前值 → 写入三层 → 结构回读 → 精确帧`；任一层失败即恢复修改前值并复验，不带着半成品推进下一状态或扩散到批量。\n- 把 `outroStart` 作为明确帧号写入状态表；正文所有 owner 的区间必须在 `outroStart` 之前结束，`[outroStart,timelineEnd)` 只允许收束 owner 可见（片尾孤儿框线是高频事故，验收门禁见 `operating-manual.md`）。\n\n## 小窗腾挪\n\n主讲人小窗的位置变化服务于录屏讲解，不是装饰运动：\n\n- **避让为先**：小窗不压当前讲解的 UI、数值、光标轨迹；录屏重点区换边时小窗换到对侧（pip-right/pip-left 即此用途）。\n- 同版式内的位置平移在**气口处一次到位**，不做常驻漂移动画；跨版式结构变化只在章节/主题切换处做。\n- 频率约束：位置变化次数 ≤ 叙事状态数。\n- 每次落位后重跑保护区检查：不压字幕、不压关键 UI、区域边界不重叠。\n\n## 竖版补充\n\n- 竖版不是横版缩小补黑边。录屏按页面信息密度分级裁切：全貌约 5% / 概念页约 8% / 表格与密集 UI 约 10% 或定向裁切；每次裁切保护正在讲解的标题、数值、按钮、字段与光标。\n- 竖版有两套并行的文字体系，不得混用：**字幕体系**（手机端单行字幕，84px 基线，见 `captions-terminology.md`）和**包装体系**（顶栏/章节标签/观点条/页脚等信息舞台文字，约 32px 起步、分档到 112–126px）。包装体系的小号副文不是字幕的备选字号；不要为塞更多装饰文字缩小字号。\n- 裁切按镜头任务切换，不按固定秒数：同一页面先全貌、说到具体信息切局部、需要时回结果全貌；录屏窗口保持稳定尺寸，改变的是内部画面焦点。\n- 内容保护区：录屏、讲解人、观点条、字幕边界不重叠，相邻区域保留约 10–45px 空隙。\n- 目标平台含微信视频号时，字幕与关键包装收进中央 6:7 区域（1080×1260，y≈330–1590），或单独交付重排变体。\n- 最终以手机观看距离验收：把代表帧缩到约 25–30% 再检查一遍字幕与录屏文字可读性。\n\nFile v1.6.0:02-剪辑方法手册/03-主题配色.md\n\n# 主题配色系统\n\n包装（字幕底板/标题/标签/观点条/MG）的配色规则与 8 套已实测主题。色值唯一真相源 = `assets/theme-kit/tokens/themes.json`；SVG 底图、1080×1920 布局与可运行 HTML 组件都在 `assets/theme-kit/`（打开 `index.html` 看总览）。\n\n**每套主题自带一份代理 playbook**（`assets/theme-kit/playbooks/<id>.md`）：token 语义与实测档位、版式搭配、信息块偏好、字幕底板硬规则、以及一段可直接嵌进 MG 生成指令的「调用 crib」。标准用法：**选定主题 → 完整读它的 playbook → 生成图形时把 crib 嵌进指令**，不再逐元素查表挑色。\n\n## 用法总则\n\n1. **开工冻结一套主题**，记录 `paletteId + paletteVersion + 明暗模式 + 输出色域`；同一条片不逐元素临时挑色，不跨主题混搭角色。\n2. **按角色令牌用色**：`canvas`（大面积底）/ `surface`（卡片、字幕底）/ `ink`（正文字幕）/ `inkMuted`（辅助）/ `primaryFill+onPrimary`（品牌填充+反色字，两个角色分别验收）/ `accent`（低频强调）/ 语义色只在真有语义时用。\n3. 大多数口播包装只需要「一组中性色 + 一个主色 + 最多一个强调色」。\n4. 用户未指定主题时给 1–2 个候选让用户拍板，不代替用户决定视觉气质。\n\n## 八套主题（9:16 口播卡片场景）\n\n| id | 模式 | canvas | ink 对 canvas | 推荐场景 |\n|---|---|---|---|---|\n| `deep-space-blue` 深空蓝 | dark | `#0B132B` | 18.4:1 | 数据分析、技术解释、AI 实战 |\n| `emerald-gold` 墨绿金 | dark | `#0F2E2E` | 13.2:1 | 业务复盘、策略、经营分析 |\n| `warm-gray-orange` 暖灰橙 | light | `#F7F4F1` | 11.5:1 | 干货分享、培训、用户故事 |\n| `midnight-purple` 午夜紫 | dark | `#1A1026` | 18.3:1 | 趋势洞察、创新话题、产品发布 |\n| `minimal-black-white` 极简黑白 | light | `#F5F5F5` | 17.3:1 | 知识卡片、观点输出、问答栏目 |\n| `sea-salt-cyan` 海盐青 | light | `#E6F4F1` | 7.7:1（v1.1 加深后达标） | 用户运营、会员增长、轻量科普 |\n| `earth-brown` 大地棕 | light | `#F6F1E9` | 11.8:1 | 商业思考、案例复盘、品牌故事 |\n| `vitality-lime` 活力青柠 | light | `#ECFDF5` | 13.2:1 | 活动宣导、会员日、上新传播 |\n\n### 已实测档位限制（按最终合成像素复核过）\n\n- `sea-salt-cyan` 的正文色已在 token v1.1 加深为 `#07554F`（对 canvas 约 7.67:1，达 7:1 目标；旧 `#0B5F58` 仅 6.65:1 已废止）；字幕在录屏等复杂背景上仍配 `surface`（`#F7FFFD`）底板保底。\n- 深色三套（deep-space-blue / emerald-gold / midnight-purple）的 `accentStrong` 对 canvas 仅 1.8–2.6:1，**只能做填充底**配 `onPrimary` 反色字，禁止直接当文字色。\n- 浅色四套的 `border` 对 canvas 仅 1.6–2.7:1，纯装饰线，不承担有信息意义的分隔。\n- 各主题 `accent` 多为大标题级（4.8–6.9:1）：只用于大号强调词与数字高亮，不用于正文和小字号。\n- 半透明角色（`surfaceMuted`/`speakerSurface`/`glow`）一律以五类背景（亮、暗、肤色、彩色 UI、高细节）的最终合成像素验收。\n\n## 对比度内部目标\n\n视频会经历缩小、运动、编码和复杂背景，所以比 WCAG 更严：\n\n| 内容 | 目标 | 不达标怎么办 |\n|---|---:|---|\n| 字幕、正文、小标签、关键数字 | `≥ 7:1` | 改前景/底板/字号结构，不靠加阴影抢救 |\n| 大标题、短时大号反色字 | `≥ 4.5:1` | 手机尺寸+实际编码后仍清楚才放行 |\n| 有信息意义的边框、图标、数据线 | `≥ 3:1` | 同时增加形状、粗细、标签或纹理 |\n\n执行要点：对比度按**最终合成像素**计算（半透明底、渐变遮罩要在真实画面上重测）；白字不自动安全（亮橙 `#FF6B35` 配白字仅 2.84:1，禁用于字幕；配深色字 5.78:1 只适合大号短文案）；颜色不做区分信息的唯一通道（同时用文字/图标/形状）。\n\n## 色板简报（palette brief）\n\n包装开工前冻结一份 palette brief，模板/MG 复用时随资产记录，之后才能整体换肤：\n\n```yaml\npaletteId: sea-salt-cyan      # 主题 id，不把版本号拼进 ID\npaletteVersion: 1.1.0\nmode: light\noutputGamut: rec709-sdr\nverifiedPairs:                 # 实测过的前景-背景对\n  - [ink, canvas, 7.67]\n  - [onPrimary, primaryFill, 8.44]\n```\n\n`paletteId`、版本、模式和输出色域是模板契约的一部分；不得在同一条片里逐元素临时挑十六进制值，也不得把浅色模板的颜色直接复制到深色模板。\n\n## 感知均匀色阶与色域\n\n- 从品牌种子色生成深浅层级时，优先在 HCT、OKLCH 或 LCh 里做；不要在 HSL 里等步长拉亮度后假设视觉上也等距。\n- 同一色族主要靠明度/色调建立层级，彩度在极亮和极暗端主动收敛，避免高光发荧光、暗部发脏。\n- 渐变、热力图和动画补间优先在 OKLCH/LCh 中插值；RGB 直插容易出现灰泥中点或不自然色相漂移。\n- P3/HDR 包装转 SDR 时做感知色域映射，不把超出色域的通道逐个硬裁到 0/255；正式 SDR 交付检查实际导出。\n- 跨模板匹配的颜色在同一画面并排比较最终合成帧；有工具时以 `ΔE2000 < 2` 为一致参考线——「十六进制相同」不保证经过不同色彩管线后看起来相同。\n\n## 图表与数据色板\n\n| 数据关系 | 色板类型 | 规则 |\n|---|---|---|\n| 从低到高的数值 | Sequential 顺序 | 单一或相邻色相，明度单调变化 |\n| 围绕零点/目标值的正负 | Diverging 发散 | 中点必须有业务含义，不放任意均值 |\n| 无顺序的多个类别 | Categorical 分类 | 色相区分为主；直接标注类别，避免只放图例 |\n| 周期数据 | Cyclical 周期 | 只有时间环、角度等真正首尾相接时用 |\n\n优先从 D3 Scale Chromatic / ColorBrewer 对应家族选，再映射到当前主题的中性色背景。禁止对普通数值使用彩虹色阶；分类超过约 6 个时优先分组、直标、分面或加形状。灰度预览仍应读出顺序与关键差异；色觉缺陷模拟后结论不能消失。\n\n## 检查清单\n\n- [ ] `paletteId` + 版本 + 模式 + 色域已冻结，实例无散落的任意十六进制值\n- [ ] 一组中性色 + 一个主色 + 最多一个强调色；语义色未被当装饰\n- [ ] 字幕/正文 7:1、大标题 4.5:1、有意义图形 3:1\n- [ ] 白字未压在亮黄/亮橙/浅色底上\n- [ ] 半透明叠层按五类背景合成像素验收\n- [ ] 灰度预览仍有阅读层级\n\n工具：`assets/theme-kit/scripts/check-contrast.mjs` 可机械校验色对；位图底图不入库，用 `assets/theme-kit/scripts/render-backgrounds.py` 从 SVG 再生。\n\nArchive v1.4.0: 187 files, 361932 bytes\n\nFiles: assets/compositions.json (7164b), assets/theme-kit/AGENTS.md (1429b), assets/theme-kit/assets/backgrounds/01-deep-space-blue.svg (1779b), assets/theme-kit/assets/backgrounds/02-emerald-gold.svg (1625b), assets/theme-kit/assets/backgrounds/03-warm-gray-orange.svg (1721b), assets/theme-kit/assets/backgrounds/04-midnight-purple.svg (1626b), assets/theme-kit/assets/backgrounds/05-minimal-black-white.svg (1257b), assets/theme-kit/assets/backgrounds/06-sea-salt-cyan.svg (1573b), assets/theme-kit/assets/backgrounds/07-earth-brown.svg (1379b), assets/theme-kit/assets/backgrounds/08-vitality-lime.svg (1664b), assets/theme-kit/assets/overlays/safe-area.svg (747b), assets/theme-kit/assets/overlays/speaker-placeholder.svg (341b), assets/theme-kit/components/portrait-talk-card.css (12009b), assets/theme-kit/components/portrait-talk-card.html (529b), assets/theme-kit/components/portrait-talk-card.js (6771b), assets/theme-kit/docs/codex-prompt.md (1278b), assets/theme-kit/docs/layout-spec.md (1436b), assets/theme-kit/docs/theme-guide.md (1647b), assets/theme-kit/examples/demo-data.json (435b), assets/theme-kit/examples/PortraitTalkCard.tsx (1358b), assets/theme-kit/examples/single.html (4578b), assets/theme-kit/index.html (4361b), assets/theme-kit/manifest.json (2260b), assets/theme-kit/package.json (279b), assets/theme-kit/playbooks/01-deep-space-blue.md (2496b), assets/theme-kit/playbooks/02-emerald-gold.md (2320b), assets/theme-kit/playbooks/03-warm-gray-orange.md (2327b), assets/theme-kit/playbooks/04-midnight-purple.md (2192b), assets/theme-kit/playbooks/05-minimal-black-white.md (2219b), assets/theme-kit/playbooks/06-sea-salt-cyan.md (2454b), assets/theme-kit/playbooks/07-earth-brown.md (2230b), assets/theme-kit/playbooks/08-vitality-lime.md (2312b), assets/theme-kit/README.md (3263b), assets/theme-kit/requirements.txt (16b), assets/theme-kit/scripts/check-contrast.mjs (1996b), assets/theme-kit/scripts/render-backgrounds.py (406b), assets/theme-kit/tokens/layouts.json (8785b), assets/theme-kit/tokens/themes.css (5272b), assets/theme-kit/tokens/themes.json (13963b), assets/theme-kit/tokens/themes.schema.json (8312b), assets/theme-kit/tokens/themes.ts (15023b), CHANGELOG.md (20194b), docs/architecture.svg (6994b), docs/contract-baseline.md (3901b), docs/migration-v1.3.1.md (8433b), docs/roadmap.md (20635b), fixtures/capabilities/valid/unverified-profile.json (1326b), fixtures/contract/cases.json (1377b), fixtures/contract/negative/captions.linebreak.invalid.json (959b), fixtures/contract/negative/captions.multiline.invalid.json (957b), fixtures/contract/negative/compatibility.invalid-hash.invalid.json (1087b), fixtures/contract/negative/compatibility.validated-without-evidence.invalid.json (1119b), fixtures/contract/positive/captions.valid.json (1002b), fixtures/contract/schema-baseline.json (208b), fixtures/distribution/valid/distribution-pack.json (3652b), fixtures/execution/valid/execution-plan.json (1199b), fixtures/feedback/valid/event.json (738b), fixtures/feedback/valid/suggestion-queue.json (1391b), fixtures/media-qa/valid/release-report.json (4496b), fixtures/plan-bundles/valid/bundle.json (502b), fixtures/plan-bundles/valid/caption-plan.json (1226b), fixtures/plan-bundles/valid/edit-plan.json (681b), fixtures/plan-bundles/valid/evidence-manifest.json (471b), fixtures/plan-bundles/valid/owner-ledger.json (1089b), fixtures/plan-bundles/valid/project.json (904b), fixtures/plan-bundles/valid/state-plan.json (1555b), fixtures/plan-bundles/valid/transcript.json (1162b), fixtures/planning/valid/content-scorecard.json (3049b), fixtures/preview/valid/approval-log.json (1086b), fixtures/preview/valid/preview-bundle.json (2038b), fixtures/profiles/base/profile.source.json (1790b), fixtures/profiles/base/terms/terminology.json (516b), fixtures/profiles/local/profile.source.json (1246b), fixtures/rules/overrides.valid.json (1239b), fixtures/rules/overrides.weakened.invalid.json (1262b), fixtures/srt/valid/captions.sidecar.json (1820b), LICENSE (1065b), package-lock.json (2946b), package.json (2856b), README.en.md (10085b)\n\nFile v1.4.0:SKILL.md\n\n---\nname: majia-chatcut-koubo\ndescription: ChatCut 口播/录屏视频代理剪辑的可验证生产系统——官方 ChatCut skill 之上的增量层。覆盖双画面版式、主题配色、过渡、人脸取景与字幕门禁，以及 Rule Registry、Creator OS IR/Rational Time、SRT 与可解释规划、预览审批、可恢复 fake adapter/证据链、本地 Media QA/导出授权、多平台交付包、反馈治理和 capability live gate。触发：ChatCut 剪口播、直播切片、竖版重构、字幕纠错、批量规划、预览审批、恢复执行、媒体 QA、交付审计。前置：需官方 ChatCut skill / MCP。边界：真实 ChatCut adapter、真实媒体探针/渲染与平台发布须另有当前环境证据，本 skill 不自动执行。\nmetadata:\n  version: 1.4.0\n---\n\n# ChatCut口播 · 马甲实战版\n\nChatCut 口播剪辑的可验证生产系统。它把 ChatCut 当作最终可继续手工调整的非线性编辑器，把规则、内容计划、审批、执行、证据、媒体 QA、交付和反馈放进同一条 fail-closed 流程。\n\n## 与官方 skill 的分工\n\nChatCut 插件自带官方 skill（plugin-basics / talking-head-guide / transcription / verification / known-errors / create-motion-graphics 等），**工具怎么用一律以官方为准**，参数以当前 MCP 工具实时描述为真相源。\n\n本包只写官方没有的：**剪成什么样算好**（版式、配色、动效节奏、构图标准）、**如何安全完成**（规则/IR、审批、幂等恢复、证据和发布授权）、**实测踩坑护栏**（坐标系陷阱、fps 错位、验证方法）与**可复用资产**。与官方重复处以官方为准。\n\n## 当前生产闭环\n\n1. **规则与计划**：Rule Registry 保护 hard policy；Creator OS IR、Rational Time、SRT sidecar 和 Explainable Planner 统一内容、时间、owner、revision 与证据引用。\n2. **审批与执行**：代表窗口 preview approval 精确绑定 scope/fingerprint；recoverable executor 用 fake adapter 验证幂等、写后回读、补偿、checkpoint/resume 和 evidence 失效传播。\n3. **QA 与交付**：Media QA 报告审计最终 artifact、音画/隐私和导出授权；distribution pack 绑定母片/content truth，`publishAction=none`。\n4. **反馈与真实环境**：反馈只进入受治理建议队列，不在线改 hard policy；capability profile 缺少当前 build/schema/probe/canary 时保持 `liveAllowed=false`。\n\n**当前边界**：离线 Schema、匿名 fixture、fake adapter 和报告审计已验证；真实 ChatCut adapter、真实媒体探针/渲染和平台发布仍需外部环境证据，本 skill 不会自动执行这些动作。\n\n## 五条第一性原则\n\n1. **内容真相**：成片的实际音频和当前时间线是唯一真相；装修不改写源区间、顺序、速度、主音频或字幕时序。\n2. **单一合成所有权**：同一帧的录屏几何、人物几何和外框只由一个稳定态或一个转场 owner 接管；白块、重复人物、孤儿框、叠加溶解都是所有权冲突。\n3. **时间原子性**：状态用半开区间 `[start,end)`；录屏、人物、框线同边界提交；媒体跨态先拆分，不按 item 起点猜状态。\n4. **证据优先**：画面变化由「隐私 → 屏幕证据 → 人物强调 → 字幕负载 → 新鲜感」决定；时间只提醒复查，不驱动机械轮播。\n5. **量化门禁**：工具成功不是完成。结构、字幕、音频、像素各有明确结果；无法看或听时标 `unverified`，不得用结构结果顶替试听或像素证据。\n\n## 通用工序\n\n1. **同步与规格**：多机位 `multicam_sync`；只留一个主音轨（讲解人 anchor，重复轨优先 mute/disable，宿主不支持才 -60dB 降级）；冻结画幅、fps、采样率。\n2. **A-roll 内容**：按官方 talking-head-guide，删减增量见 `references/operating-manual.md`；一句话原则——**删声音比删意思安全，错删信息的代价高于漏留口癖**。\n3. **剪后转写与字幕**：删除/重排/变速后必须刷新剪后转写；字幕见 `references/captions-terminology.md`——第一步永远是查字幕源绑定（挂在翻译变体轨上=P0，先切回原文源）。开工先扫素材目录找用户精校逐字稿：有则它是字幕文本唯一真相源，禁止在 ASR 错词上自行猜测修正（数字吞位/繁体/专名是 ASR 三大高发）。\n4. **样片闸门（渐进交付）**：横版先做开头约 18–23 秒、竖版 20–30 秒样片，确认后才批量；**长片（>5 分钟）升级为 60 秒预览闸——先把开头 60 秒做成全层完成态（剪辑+状态机+过渡+字幕+包装+隐私），请用户播放验收，通过后才向后推进**；批量中每完成一幕渲染抽查帧，不整片铺完才验。**验收单元 = 完整成片体验（画面+动画+字幕+隐私），字幕修正随幕完成，不设整片末尾统一校对环节。**任何一项失败先修样片，不批量复制错误。\n5. **画面结构**：双画面版式与七执行状态见 `references/dual-frame-layouts.md`；人脸取景见 `references/face-reframe.md`；批量切片与逐片精修先读 `references/operating-manual.md`。\n6. **动效与包装**：字幕锁定后才做过渡、B-roll、MG；过渡工程见 `references/motion-transitions.md`；配色见 `references/theme-palettes.md`。静态章节卡单调时，可由外部 MG 工具（如 hyperframes）产 MP4 后 `import_media` 替换；音效/BGM 走 ChatCut 素材库与生成工具，音量不夺 anchor。\n7. **验收**：结构回读 + 合成像素 + 实际试听三证齐才算完成；帧率以 ffprobe 读实际导出文件为准。请用户播放验收时按 `references/chatcut-field-notes.md` 双端预览路由：本地 ChatCut Mac 客户端优先 → 未装提示一次可下载（不强推）→ 浏览器兜底（明示网页端可能卡顿）；代理自己的像素证据始终 = 云端渲染帧。\n\n## 成片红线\n\n- 字幕：简体、始终单行、来自真实语音转写、按完整气口分卡；用户提供精校逐字稿时，精校稿是文本唯一真相源，禁止在 ASR 错词上自行猜测修正；行尾逗号不显示，句末标点保留；发布硬规则以 `rules/policy.json` 为准（profile 只能校准不能放宽），发布态跑 `scripts/validate-caption-pages.mjs --strict`，退出码非 0 = 未完成。\n- 内容：重说默认删前保后；重排只搬完整语义单位，不拼出说话人没说过的话；默认自然结束，不加模板片尾。\n- 画面：PiP 不拉伸；正圆以裁后可见区判定（`visibleWidth = width × (1−cropLeft−cropRight)`），改外框时保留旧 crop = 二次裁切事故；人物层保留完整源画幅，效果顺序 reframe → mask；任一精确帧露黑边即撤销整段动态取景；框线不穿人物；二维码等隐私信息全时间范围不可见，部分遮挡=失败。\n- 工程：30fps 时间线可能 60fps 导出，MG 一律按秒或归一化帧率计时；写入宣称成功≠落盘（回读 FX 实例）；素材池有资产≠时间线有实例。\n- 协作：用户已验收的设计是受保护基线，删除、降级、明显改变必须先问——连续兜底失败也不例外；同一可见缺陷第二次出现=停止逐片补丁，修共享根因并全量回归。\n\n## 确认闸门\n\n- **状态表先行（硬闸）**：画面结构批量落库前，必须先产出全片状态表（stateId｜[start,end)｜三层参数｜进出过渡｜隐私｜语义理由）并请用户过目；无状态表禁止批量 `edit_item`。上下文压缩后不凭摘要续做画面结构——先回读状态表与命中分册再动手。\n- 高风险删除：批量前确认代表性切点。字幕：样片窗口确认后扩展。视觉方向/配色/包装风格：先出 2–4 个可选方案让用户点选，不给单方案硬推，不代替用户拍板审美。\n- 导出：用户开口才导出；短导出授权按本轮措辞记录范围，不外扩、不跨任务。\n- 自动修复最多连续三轮，每轮要有新证据；仍失败就停，保留最近可用版本，产出带证据帧的交接文档可请外部 AI 复核。\n\n## 按需加载路由表\n\n| 任务信号 | 完整读取 |\n| --- | --- |\n| 批量切片、逐片精修、验收门禁、八道硬闸、A-roll 删减细则、多代理调度、生成资产纪律 | [逐片执行手册](references/operating-manual.md) |\n| 双画面构图、版式选型、七执行状态、状态原子契约、圆窗/分栏/上下屏、小窗腾挪 | [双画面版式系统](references/dual-frame-layouts.md) |\n| 主题配色、字幕底板、对比度、按角色用色、图表色板 | [主题配色系统](references/theme-palettes.md) + 选定主题的 `assets/theme-kit/playbooks/<id>.md` |\n| MG/设计图形加不加、加哪种、画面任务路由 | [信息块类型与选用](references/graphics-blocks.md) |\n| 过渡动画、状态切换、闪烁/黑块排查、fps 归一化 | [过渡动效工程](references/motion-transitions.md) |\n| 人脸居中、内部取景漂移、蒙版参数、黑边排查 | [人脸取景与三层合成](references/face-reframe.md) |\n| 字幕气口、术语纠错、词表维护、字幕门禁 | [字幕与词表](references/captions-terminology.md) |\n| 信息流切片开头钩子、完播、中段节奏、结尾、四平台路由 | [留存结构剪辑](references/retention-structure.md) |\n| ChatCut 宿主实测坑：crop 语义、两步提交、编辑器/云端渲染差异、MG 媒体槽失效、窗口 reframe shader、字幕分页引擎、音频层基线、隐私扫描 SOP、双端预览路由 | [ChatCut 宿主实测行为档案](references/chatcut-field-notes.md) |\n| 连接报错、OAuth 失效、打开既有项目、转写挂死、上下文压缩恢复 | [故障恢复手册](references/recovery.md) |\n\n可复用资产：`assets/compositions.json`（8 版式坐标快照）、`assets/theme-kit/`（8 主题 token+SVG 底图+可运行组件）、`templates/`（词表/实测参数/宿主兼容契约模板 + 本地个人层模板，装进你自己的数字）、`rules/policy.json`（不可由 profile 放宽的字幕发布策略）、`schemas/`（source/resolved profile、字幕、词表、兼容与资产契约）、`src/cli/resolve-profile.mjs`（profile 继承解析与来源追踪）、`scripts/validate-caption-pages.mjs`（字幕机械校验）。发布前统一跑 `npm run verify`。\n\n## 让它变成你自己的（本地个人层契约）\n\n本包的数字（22 字/行、330px 圆窗、`magnification≈0.30`）是作者素材上的实测起点，不是跨素材真理。个人化的正式机制是**本地个人层** `~/.config/majia-chatcut-koubo/`：\n\n1. **探测与叠加**：每次开工先探测该目录；存在则把其中内容叠加在本包通用规则之上——`profile/*.json`（个人版式与字幕实测数字，覆盖 `assets/compositions.json` 与模板同名键）、`terminology.json`（个人词表，validator 用 `--terms` 指向它）、`aesthetics.md`（个人审美基线，审美分歧时先读）、`local-notes.md`（个人补充护栏）。目录不存在就只用包内通用值，不报错。\n2. **起模**：把 `templates/local-config-example/` 整体复制为 `~/.config/majia-chatcut-koubo/`，在你的素材上做样片，把验证过的数字、品牌词表和审美偏好填进去。\n3. **边界**：品牌实词、真实业务数字、个人路径只进本地层，永不进 git、永不进公开仓；本地 profile 只能校准参数，不能放宽 `rules/policy.json` 的发布硬规则。数字变了就升版本存新文件，不覆盖旧版。\n\n## 📋 版本记录\n\n- **v1.4.0（2026-07-24）**：升级为可验证生产系统；交付 Rule Registry、Creator OS IR/Rational Time、SRT/可解释规划、预览审批、可恢复执行与证据、Media QA/导出授权、受治理交付包、反馈治理和 capability live gate；真实适配器/媒体探针/平台发布仍明确未验证且不自动执行。\n- **v1.3.1（2026-07-24）**：契约止血与可复现发布地基；Node/lockfile/CI、离线 JSON Schema、source/resolved profile、字幕 P0、资产/对比度/版本漂移门禁。\n- **v1.3.0（2026-07-24）**：逐片执行手册、ChatCut 宿主实测档案、八道硬闸、60 秒预览闸、留存结构与本地个人层。\n\n完整变更历史见 [CHANGELOG.md](./CHANGELOG.md) 或 [GitHub Releases](https://github.com/maojiebc/majia-chatcut-koubo/releases)。\n\n## 👤 作者 / 联系\n\n**马甲（@maojiebc）** · 超级马甲\n\n如果这份 skill 帮到你，欢迎在以下任意渠道找我交流踩坑实录、提需求、报 bug，也欢迎勾兑用户运营 / 数据中台 / BI 工程的实战经验：\n\n| 渠道 | 链接 |\n|---|---|\n| 📧 Email | [m9224@163.com](mailto:m9224@163.com) |\n| 🐙 GitHub | [github.com/maojiebc](https://github.com/maojiebc) |\n| 🪝 ClawHub | [clawhub.ai/p/maojiebc](https://clawhub.ai/p/maojiebc) |\n| 🐦 X | [@maojiebc](https://x.com/maojiebc) |\n| 📕 小红书 | [超级马甲](https://xhslink.com/m/4fQMJeHHWKC) |\n| 📰 微信公众号 | [超级马甲](https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzY5NzIzODk2NA==#wechat_redirect) |\n\n> 这份 skill 是 14 年用户运营 + 数据中台 + BI 工程实战沉淀出来的，问题/合作随时聊。\n\nFile v1.4.0:assets/theme-kit/README.md\n\n# 9:16 口播视频配色与底图系统\n\n这是一套面向 1080 × 1920 竖屏口播内容的设计资产包。8 套配色均已拆成原始色板、语义色、SVG 底图、布局坐标和可运行的 HTML/CSS/JS 组件；PNG 与海报属于本地生成物，不随 source 包预生成。\n\n## 先看什么\n\n1. 直接打开 `index.html`：查看 8 套主题总览。\n2. 打开 `examples/single.html`：切换主题、布局、文案和安全区。\n3. Codex 开始改代码前先读取根目录 `AGENTS.md`。\n4. 颜色以 `tokens/themes.json` 为唯一数据源，布局以 `tokens/layouts.json` 为唯一数据源。\n\n## 快速接入\n\n```html\n<link rel=\"stylesheet\" href=\"tokens/themes.css\">\n<link rel=\"stylesheet\" href=\"components/portrait-talk-card.css\">\n<div id=\"card\"></div>\n<script src=\"components/portrait-talk-card.js\"></script>\n<script>\n  PortraitTalkThemeKit.mount(\"#card\", {\n    theme: \"sea-salt-cyan\",\n    layout: \"fresh-frame\",\n    showSubtitle: true,\n    copy: {\n      title: \"会员不是折扣人群，\\n而是经营资产\",\n      emphasis: \"经营资产\",\n      footer: \"先理解用户，再设计权益\"\n    }\n  });\n</script>\n```\n\n组件画布固定为 1080 × 1920。预览时可以使用 CSS `transform: scale(...)` 缩放，导出时按原尺寸截图或录制。\n\n## 替换口播人物\n\n组件内 `.talk-card__speaker` 是人物安全区。透明背景视频建议加 `is-cutout`：\n\n```html\n<div class=\"talk-card__speaker is-cutout\">\n  <video class=\"talk-card__speaker-media\" src=\"speaker.webm\" autoplay muted loop playsinline></video>\n</div>\n```\n\n普通矩形视频去掉 `is-cutout`，组件会按主题自动加底色、边框和圆角。\n\n## 文件结构\n\n- `AGENTS.md`：给 Codex 的项目级约束。\n- `tokens/themes.json`：8 套主题、原始色板和语义色。\n- `tokens/layouts.json`：8 个布局的 1080 × 1920 坐标。\n- `tokens/themes.css` / `tokens/themes.ts`：前端可直接使用的变量与类型。\n- `assets/backgrounds/*.svg`：可编辑矢量底图。\n- `assets/backgrounds-png/*.png`：运行 `scripts/render-backgrounds.py` 后生成的 1080 × 1920 纯底图（可选，不随 source 包提交）。\n- `assets/demo-posters/*.png`：可选的本地成品预览输出，不是 release 必需资产。\n- `assets/overlays/safe-area.svg`：字幕和底部 UI 保护区参考。\n- `components/portrait-talk-card.*`：无依赖 HTML 组件。\n- `examples/PortraitTalkCard.tsx`：React 示例。\n- `scripts/check-contrast.mjs`：检查关键文字与按钮对比度。\n\n## 主题选择\n\n| 主题 | 适合内容 | 默认布局 |\n|---|---|---|\n| 深空蓝 | 数据、技术、AI、方法论 | 斜切科技 |\n| 墨绿金 | 业务复盘、经营、策略 | 商务分栏 |\n| 暖灰橙 | 干货、培训、日常表达 | 居中编辑 |\n| 午夜紫 | 趋势、创新、产品发布 | 轨道聚焦 |\n| 极简黑白 | 知识卡片、观点、问答 | 极简长栏 |\n| 海盐青 | 用户运营、会员增长、服务 | 清新框景 |\n| 大地棕 | 商业思考、案例、品牌故事 | 大地带状 |\n| 活力青柠 | 活动、会员日、上新传播 | 轻快角落 |\n\n## 校验\n\n```bash\nnode scripts/check-contrast.mjs\npython3 -m http.server 8000\n```\n\n然后访问本地的 `index.html` 和 `examples/single.html`。\n\nFile v1.4.0:README.md\n\n# ChatCut口播 · 马甲实战版\n\n![Skill Version](https://img.shields.io/badge/skill-v1.4.0-blue)\n[![skills.sh](https://skills.sh/b/maojiebc/majia-chatcut-koubo)](https://skills.sh/maojiebc/majia-chatcut-koubo)\n\n> **ChatCut口播 · 马甲实战版** — 安装标识（slug）仍为 `majia-chatcut-koubo`，安装命令保持不变。\n\n**从剪辑经验包升级为可验证生产系统** —— 在官方 ChatCut skill 之上，把版式/配色/动效/人脸取景与规则、IR/SRT、审批、可恢复执行、证据、媒体 QA、交付和反馈治理串成一条 fail-closed 生产链。\n\n<img src=\"https://raw.githubusercontent.com/maojiebc/majia-chatcut-koubo/main/docs/architecture.png\" alt=\"v1.4.0 可验证生产系统：Rule Registry → Creator OS IR/SRT → Explainable Planner → Preview Approval → Recoverable Executor/Evidence → Media QA → Distribution Pack → Feedback Governance，并由 Capability Profile 阻断无证据 live route\" width=\"100%\">\n\n<img src=\"https://raw.githubusercontent.com/maojiebc/majia-chatcut-koubo/main/docs/theme-preview.png\" alt=\"v1.4.0 · 8 套口播主题配色总览(每套含代理 playbook):深空蓝/墨绿金/暖灰橙/午夜紫/极简黑白/海盐青/大地棕/活力青柠\" width=\"100%\">\n\n## 这个包解决什么\n\n用 AI 代理(Codex / WorkBuddy / TRAE 等 ChatCut 宿主)剪口播视频时,官方 skill 教了「工具怎么用」,但没人告诉代理「剪成什么样算好」。结果是:画中画被裁成叶片形、过渡生硬得像 PPT、字幕两行挤压、导出后动画凭空消失 0.2 秒、黑边反复修不掉。\n\n本包把这些坑的**根因和数学**写成代理可执行的规范，并把“做完”升级为可追溯的生产状态：\n\n- **双画面版式系统** — 横竖版 8 套具名版式带精确坐标(`assets/compositions.json`),七执行状态语义决策器 + 状态落地原子契约:什么时候人物全屏、什么时候圆窗、什么时候纯录屏,由证据决定不由时间轮播\n- **主题配色系统** — 8 套实测主题(token + SVG 底图 + 可运行 HTML 组件),**每套自带代理 playbook**:token 语义档位、信息块偏好、字幕底板硬规则、可直接嵌进生成指令的调用 crib\n- **过渡动效工程** — 端点契约、`N-1` 归一化公式、分层缓动、四档可靠性链(含 ChatCut 宿主快速路由)、fps 归一化(30fps 时间线 60fps 导出的经典坑)\n- **人脸取景与三层合成** — reframe→mask 硬顺序、GL UV 坐标陷阱(Y 轴底部原点/radius 实为直径)、overscan 黑边数学、「居中≠贴脸」构图标准\n- **字幕与词表** — 气口分卡判例、单行机器门禁(validator + 不可放宽的 `rules/policy.json`)、译文轨 P0 陷阱、精校逐字稿真相源、可自维护词表模板\n- **Rule Registry** — 14 条首批规则覆盖内容真相、字幕、隐私、时间线、执行安全与导出授权六域；stable ID、来源、覆盖权限、runtime/contract 执行级别和 pass/fail fixture 全部机器校验\n- **Creator OS IR v0** — 显式时间域的有理时间与半开区间；project、transcript、edit、state、owner、caption、evidence 七类计划文档由 bundle 串联，revision、证据、时间线 coverage、唯一视觉 owner、隐私 owner 和批准状态统一离线校验\n- **SRT 文本桥** — 标准 SRT 供人工审阅，sidecar 保留 cue/page/word identity、exact range、revision 与量化残差；重编号无损，纠字/改时/隐藏/删除/合并/拆分/重排只生成可审计候选\n- **可解释内容规划** — 只计算 opening density、evidence coverage、低置信/风险词和破坏性编辑等可复算信号；Hook→SoftCTA 候选只引用已有 segment/word，保持人工待审，不生成文案或“爆款概率”\n- **预览审批门** — 自动覆盖首 60 秒、复杂状态、全部隐私风险段与片尾；批准绑定 actor、完整窗口 scope、plan/style/timeline 指纹，缺失、撤销或任一漂移即关闭执行\n- **可恢复执行与证据底座** — 离线 fake adapter 证明 logical ID 唯一绑定、幂等写、revision lock、写后回读、scene 补偿、checkpoint/resume 与证据失效传播；尚不宣称真实 ChatCut adapter 已验证\n- **Capability profile 与 live route 闸门** — ChatCut build、tool schema hash、TTL、mandatory probes、脱敏 canary 与 fallback 统一审计；仓库默认 fixture 明确为 `unverified`，没有 current canary 时只走 fake/manual/blocked 路线\n- **本地 Media QA 与导出授权** — 对最终文件 hash、codec/timebase/尺寸/颜色/音轨/时长、loudness/true-peak/silence、black/freeze、隐私覆盖和确定性抽帧表做报告审计；只验证输入报告，不自动导出或发布\n- **多平台交付包底座** — 平台规则带来源/观测日/过期日/可信度，过期 hard rule 自动降级 advisory；交付物绑定母片 hash、timeline revision 与 content truth hash，manifest 禁止自动发布\n- **反馈治理底座** — 事件仅保存匿名 hash、稳定错误签名与计数指标，不接收字幕正文/帧图/音频/用户路径/私有词表；规则建议需重复样本、证据、反例、owner、人工审核和回滚记录，永不在线自动应用\n- **逐片执行手册 + 八道硬闸** — 一片一闭环、批量流水线、验证方法学、历史事故的回归闸门;60 秒预览闸与状态表先行确认闸\n- **ChatCut 宿主实测行为档案** — crop 语义、编辑器/云端渲染差异、MG 媒体槽失效与窗口 reframe shader 正解、字幕分页引擎机器路径、隐私扫描 SOP、双端预览路由\n- **留存结构 + 四平台路由** — 开头钩子决策流、钩子-兑现成对、注意力时钟、抖音/小红书/视频号/B站条件路由\n- **本地个人层** — `~/.config/majia-chatcut-koubo/` 叠加个人 profile/词表/审美基线;品牌词与实测数字留在本地,公开包保持通用\n\n> **真实环境边界**：当前仓库验证的是离线 Schema、匿名 fixtures、fake adapter、报告审计与 fail-closed 路由。真实 ChatCut adapter、真实媒体探针/渲染与平台发布尚未验证，也不会被自动执行。\n\n## 安装\n\n```bash\n# GitHub CLI\ngh skill install maojiebc/majia-chatcut-koubo\n\n# 或 skills.sh\nnpx skills add maojiebc/majia-chatcut-koubo\n\n# 或 ClawHub\nnpx clawhub install majia-chatcut-koubo\n```\n\n## 开发与发布验证\n\n```bash\nnpm ci\nnpm run verify\n\n# 单独审计 Rule Registry；本地 override 只能保持或收紧 hard policy\nnpm run validate:rules\nnode scripts/validate-rule-registry.mjs \\\n  --overrides fixtures/rules/overrides.valid.json\n\n# 校验匿名 Creator OS 完整计划包\nnpm run validate:plans\n\n# 重建并审计可解释 scorecard、叙事候选与 decision queue\nnpm run validate:planner\n\n# 校验标准 SRT 与 sidecar 的稳定往返\nnpm run validate:srt\n\n# 校验代表预览的批准 scope 与当前 plan/style/timeline 指纹\nnpm run validate:preview\n\n# 跑写前/写后超时、partial write、ID 变化与 revision drift 场景\nnpm run validate:recovery\n\n# 审计 ChatCut 能力证据；默认 fixture 应保持 live=false/unverified\nnpm run validate:capabilities\n\n# 审计匿名最终媒体 probe、隐私覆盖、抽帧计划与导出授权\nnpm run validate:media\n\n# 审计平台 profile 新鲜度、母片绑定与 no-publish 交付 manifest\nnpm run validate:distribution\n\n# 审计匿名反馈事件与人工发布建议队列\nnpm run validate:feedback\n\n# 把可继承的 source profile 解析为无 extends、可追溯的 resolved profile\nnode src/cli/resolve-profile.mjs \\\n  --profile <profile.source.json> \\\n  --root <profile-config-root> \\\n  --strict \\\n  --out <profile-config-root>/generated/profile.resolved.json \\\n  --trace <profile-config-root>/generated/profile.merge-trace.json\n\n# 发布态字幕校验；warning 也会阻断\nnode scripts/validate-caption-pages.mjs \\\n  --strict \\\n  --profile <profile.source.json> \\\n  --root <profile-config-root> \\\n  --input <captions.json>\n```\n\n`npm run verify` 会执行离线全仓 Schema、Rule Registry 与 override 覆盖审计、Creator OS plan bundle 跨文件审计、全量回归测试、主题对比度、资产几何/引用、公开内容安全扫描和版本漂移门禁；安全扫描只报告相对路径/规则/行号，本地可用 `.ota-deny-list.txt` 与 `.ota-allow-list.txt` 管理精确禁用词和公开豁免（allow 仅抵消本地 deny，不能绕过内置路径/密钥规则）。Profile 新文件应使用 `schemas/profile.source.schema.json`；旧 `profile.schema.json` 只保留为兼容 shim。Resolver 与计划产物可能含项目级标识，只能写在显式 `--root` 内，默认已由 `.gitignore` 排除。升级说明见 [V1.3.1 迁移指南](docs/migration-v1.3.1.md)，后续工程顺序与验收边界见 [公开工程路线图](docs/roadmap.md)。\n\n## 让它变成你的(本地个人层)\n\n包里的数字(22 字/行、330px 圆窗、`magnification≈0.30`)是作者素材上的实测起点。正式机制:把 `templates/local-config-example/` 复制为 `~/.config/majia-chatcut-koubo/`,装进你的个人 profile(实测版式数字)、词表(validator `--terms` 直读)、审美基线与补充护栏——skill 开工探测该目录,存在即叠加。品牌实词与真实业务数字只进本地层,永不进 git;本地 profile 只能校准参数,不能放宽 `rules/policy.json` 的发布硬规则。数字变了就升版本存新文件,不覆盖旧版。\n\n## 结构\n\n```\nSKILL.md                        主入口:五条第一性原则+通用工序+红线+确认闸门+路由表\nreferences/\n  operating-manual.md           逐片闭环/八道硬闸/批量流水线/验证方法学/生成资产纪律\n  dual-frame-layouts.md         双画面版式/七执行状态决策器/状态原子契约\n  theme-palettes.md             8 主题+对比度档位+按角色用色+图表色板\n  graphics-blocks.md            十类信息块×何时用+画面任务路由(证据信号驱动)\n  motion-transitions.md         过渡工程:端点契约/四档链+ChatCut 快速路由/fps 归一化\n  face-reframe.md               三层合成/坐标系陷阱/overscan 数学/兼容探针\n  captions-terminology.md       气口分卡/单行门禁/精校稿真相源/词表机制\n  retention-structure.md        开头钩子决策流/钩子-兑现/注意力时钟/四平台路由\n  chatcut-field-notes.md        ChatCut 宿主实测行为档案(crop/渲染差异/shader/分页引擎/隐私 SOP/双端预览)\n  recovery.md                   502/403/工具面固化/续接手册协议/转写绕行\ntemplates/\n  terminology.template.json     词表模板(装你的品牌与误听)\n  operating-profile.template.json  实测参数模板(装你的数字)\n  compatibility.template.json   宿主能力探针契约(公式仅在探针通过后使用)\n  local-config-example/         本地个人层四件套模板(复制到 ~/.config/majia-chatcut-koubo/)\n  examples.md                   气口/钩子/删减判例库\nassets/\n  compositions.json             8 版式坐标快照(mustRemainVisible/mustBeRedacted 分离)\n  theme-kit/                    8 主题 token+SVG 底图+可运行组件\n  theme-kit/playbooks/          每主题一份代理 playbook(档位+版式+crib)\nrules/\n  policy.json                   不可由 profile 放宽的字幕发布策略(单行/毫秒短卡/繁体零容忍)\n  registry.json                 六域 Rule Registry(stable ID/来源/覆盖语义/执行级别/fixtures)\nschemas/                        profile、字幕、Rule Registry/overrides、Creator OS IR、兼容与资产契约\nfixtures/plan-bundles/          匿名完整 Creator OS plan bundle\nfixtures/srt/                   匿名 SRT + sidecar 往返 fixture\nfixtures/preview/               匿名 preview bundle + approval log\nfixtures/execution/             匿名 execution plan\nfixtures/media-qa/              匿名 final artifact release report\nfixtures/distribution/          匿名平台 profile + deliverables pack\nfixtures/feedback/              匿名 privacy-safe event + suggested update queue\nfixtures/planning/              匿名 explainable content scorecard\nfixtures/capabilities/          明确 live=false/unverified 的 capability profile\nsrc/config/                     profile resolver、合并来源与安全序列化\nsrc/cli/resolve-profile.mjs     source → resolved CLI\nsrc/rules/                      Rule Registry 审计与 tighten-only override evaluator\nsrc/time/                       有理时间、显式时间域与半开区间运算\nsrc/planning/                   Creator OS bundle 跨文档 validator\n                                 SRT export/parser/matcher/diff classifier\nsrc/execution/                  fake adapter、journal、reconcile、resume、evidence\nsrc/governance/                 feedback event 与建议发布治理\nsrc/qa/                         媒体 probe/audio/privacy/inspection/release audit\nsrc/distribution/               平台 profile freshness 与 master binding audit\nscripts/\n  validate-all-json.mjs         全仓离线 Schema release gate\n  validate-rule-registry.mjs    Registry/来源/覆盖权限/pass-fail fixture 审计\n  validate-plan-bundle.mjs      plan schemas/revision/coverage/owner/evidence 审计\n  srt-bridge.mjs                SRT/sidecar export 与候选 diff CLI\n  validate-preview-approval.mjs 预览批准 scope/指纹/失效 gate\n  validate-recovery-fixtures.mjs 可恢复执行故障注入 gate\n  validate-capability-profile.mjs build/schema/TTL/probe/canary live-route gate\n  validate-media-release.mjs    最终媒体报告与导出授权 gate\n  validate-distribution-pack.mjs 平台交付 manifest gate\n  validate-feedback-governance.mjs 匿名事件与人工 release queue gate\n  validate-caption-pages.mjs    字幕页机械校验(profile 继承/结构化 JSON/--root/--strict/--terms)\n  check-assets.mjs              composition/theme 引用与几何 gate\n  check-version-drift.mjs       package/SKILL/README/CHANGELOG 漂移 gate\ntests/\n  *.test.mjs                    字幕/profile/schema/资产/文档回归测试\ndocs/\n  architecture.svg              增量层全景框架图(本页首图)\n  theme-preview.png             8 主题配色总览\n  contract-baseline.md          本轮契约止血基线与 fail-closed 原则\n  migration-v1.3.1.md           source/resolved profile 与字幕契约迁移说明\n  roadmap.md                    已交付/下一步/规划/研究的公开工程路线图\n```\n\n## 📋 版本记录\n\n**V1.4.0（2026-07-24）** — 从技巧包升级为可验证生产系统：Rule Registry、Creator OS IR/Rational Time、SRT/可解释规划、预览审批、可恢复执行与证据链、Media QA/导出授权、受治理交付包、反馈治理和 capability live gate 全部进入离线 release gates；真实 ChatCut adapter、真实媒体探针/渲染与平台发布继续保持 `unverified` 且不自动执行。\n\n**V1.3.1(2026-07-24)** — 契约止血与发布地基：Node/lockfile/CI 可复现安装；Ajv 离线验证全仓 JSON；source/resolved profile 契约、继承路径修复、合并来源追踪与安全 CLI；字幕数值语义、词 key/区间、短卡类型、override 上限、严格 warning 与项目/时间线 provenance 绑定；主题对比度、composition 几何、资产引用和文档/版本漂移全部进入 release gate。旧字幕 JSON 仍可非严格迁移，发布态须补齐 provenance。\n\n**V1.3.0(2026-07-24)** — 制度增量+ChatCut 实测档案+本地个人层:references 6→10 册(新增逐片执行手册/宿主实测行为档案/留存结构/故障恢复);SKILL 新增确认闸门(状态表先行硬闸/60 秒预览闸/精校稿真相源);机器门禁升级(不可放宽 `rules/policy.json`+schemas+validator 支持 profile 继承/毫秒短卡/`--terms` 个人词表+14 项回归测试);主题 token v1.1 对比度修正(海盐青正文 7.67:1 达标);本地个人层正式契约 `~/.config/majia-chatcut-koubo/` + `templates/local-config-example/` 四件套模板。\n\n完整变更历史见 [CHANGELOG.md](./CHANGELOG.md) 或 [GitHub Releases](https://github.com/maojiebc/majia-chatcut-koubo/releases)。\n\n## 方法来源\n\n规则主体来自作者的 ChatCut 实战复盘。部分方法论参考了以下开源项目(未复制代码实现):`Agentchengfeng/chengfeng-videocut-skills`(删前保后/风险分层)、`lcbuaaliu/ai-jian-koubo`(确定性预选+语义判断)、`WyattBlue/auto-editor`(反向审查将删内容)、`radix-ui/colors`、`material-foundation/material-color-utilities`、`adobe/leonardo`(语义色阶与对比度优先)、`d3/d3-scale-chromatic`(数据色板)、`pireel/pireel`(AGPL-3.0;仅吸收「主题=数据+代理 playbook」与逐主题调用 crib 的组织方法,未复制其任何主题内容、文本或代码)、`yoqu/lingji-cut`(Apache-2.0;仅吸收「进场/出场/循环强调」三轴动效枚举的组织方法,枚举取舍与全部文本为本包自定)。\n\n## 👤 作者 / 联系\n\n**马甲（@maojiebc）** · 超级马甲\n\n如果这份 skill 帮到你，欢迎在以下任意渠道找我交流踩坑实录、提需求、报 bug，也欢迎勾兑用户运营 / 数据中台 / BI 工程的实战经验：\n\n| 渠道 | 链接 |\n|---|---|\n| 📧 Email | [m9224@163.com](mailto:m9224@163.com) |\n| 🐙 GitHub | [github.com/maojiebc](https://github.com/maojiebc) |\n| 🪝 ClawHub | [clawhub.ai/p/maojiebc](https://clawhub.ai/p/maojiebc) |\n| 🐦 X | [@maojiebc](https://x.com/maojiebc) |\n| 📕 小红书 | [超级马甲](https://xhslink.com/m/4fQMJeHHWKC) |\n| 📰 微信公众号 | [超级马甲](https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzY5NzIzODk2NA==#wechat_redirect) |\n\n> 这份 skill 是 14 年用户运营 + 内容矩阵实战沉淀出来的，问题/合作随时聊。\n\nFile v1.4.0:templates/local-config-example/README.md\n\n# 本地个人层模板（local-config-example）\n\n把本目录整体复制为 `~/.config/majia-chatcut-koubo/`，装进你自己的数字与偏好。skill 开工时会探测该目录：**存在则叠加在本包的通用规则之上**；不存在就只用包内通用值。本地层**永不进 git**、永不进公开仓——品牌词、真实业务数字、个人实测坐标全部放这里。\n\n```\n~/.config/majia-chatcut-koubo/\n  profile/            个人 operating profile(实测版式/字幕/音频数字);同名键覆盖包内\n                      assets/compositions.json 与模板默认值;一版一文件,升版不覆盖旧版\n  terminology.json    个人词表(机器读):validator 用 --terms 指向它\n  terminology.md      个人词表(人读版,可选):维护心得、证据记录\n  aesthetics.md       个人审美基线:过渡手感、构图偏好、保护基线清单\n  local-notes.md      个人补充护栏:私有工作流衔接、平台账号惯例、个人路径\n```\n\n对应关系：\n\n| 本地文件 | 覆盖/叠加的公开资产 | 用法 |\n| --- | --- | --- |\n| `profile/*.json` | `templates/operating-profile.template.json` 起模；同名键覆盖 `assets/compositions.json` 坐标 | 使用 source schema；剪辑开工先读；`validate-caption-pages.mjs --profile` 指向它 |\n| `terminology.json` | `templates/terminology.template.json` 起模 | `validate-caption-pages.mjs --terms` 指向它 |\n| `aesthetics.md` | `SKILL.md` 红线之上的个人裁决面 | 审美分歧时代理先读它再问你 |\n| `local-notes.md` | 无（纯个人层） | 写不适合进公开包的一切个人惯例 |\n\n例子文件都带注释，替换成你的内容即可。\n\nProfile 可以用相对 `extends` 继承一个父文件；每个路径都按**声明它的那一层文件**解析。数组整体替换，普通对象递归合并。叶 profile 必须自己声明 `status` 和完整 `provenance`，不能继承父层的项目/时间线可信身份。\n\n发布前先解析并检查来源：\n\n```bash\nnode src/cli/resolve-profile.mjs \\\n  --profile ~/.config/majia-chatcut-koubo/profile/<你的-profile>.json \\\n  --root ~/.config/majia-chatcut-koubo \\\n  --strict \\\n  --out ~/.config/majia-chatcut-koubo/generated/profile.resolved.json \\\n  --trace ~/.config/majia-chatcut-koubo/generated/profile.merge-trace.json\n```\n\n生成的 resolved 文件不含 `extends`，trace 可以追到每个字段来自哪一层。\n输出只能留在 `--root` 内，且可能包含项目级标识；两类默认文件名已在\n`.gitignore` 中排除。旧 profile 可先不加 `--strict` 做只读迁移检查，但\n`contractStatus=migration-incomplete` 时不会写出 resolved 文件。\n\nFile v1.4.0:_meta.json\n\n{\n  \"ownerId\": \"kn71njkqkab6a75db7hqb6ekz982jd29\",\n  \"slug\": \"majia-chatcut-koubo\",\n  \"version\": \"1.4.0\",\n  \"publishedAt\": 1784900231150\n}\n\nFile v1.4.0:references/captions-terminology.md\n\n# 字幕与词表\n\n中文口播字幕的气口分卡、单行门禁、术语纠错与可自维护词表机制。\n\n## 四层模型（先修上游再修下游）\n\n1. **原始转写**：语音文字与词级时间戳，时序基础。\n2. **字幕源/语言变体**：字幕项显示哪个变体。\n3. **分页与气口**：什么时间显示哪张单行卡。\n4. **显示样式/局部覆盖**：字体、位置与极少量 display override。\n\n上游错误没解决时不在显示层堆补丁——显示层补丁堆积（几十上百个 override）是字幕反复返工的标志。\n\n## 第一步永远查源绑定（P0 陷阱）\n\n中文原音的字幕挂在 `translation:zh-Hans`/`zh-CN` **译文变体轨**上是高频事故：症状 = 凭空增词、整段漏句、错词、后半段突然变英文。任何字幕任务第一步回读字幕源绑定；发现译文轨立即切回原文源、基于**最终剪后 A-roll** 重转写重分页，禁止在译文结果上继续修。\n\n同理：删除/重排/变速后旧时间戳全部失效，必须刷新剪后转写，不能沿用剪前时间轴。剪后重建按序：①锁定 A-roll 内容与速度 → ②刷新/重生成当前时间线转写 → ③比较媒体真实时长与转写首尾，补查 ASR 未覆盖的开头结尾 → ④先只校正文字，再单独做气口、标点和分页 → ⑤生成可见字幕后再次回读全文和时间范围。宿主无法对剪后时间线刷新转写时，不能假装旧字幕仍然准确——至少逐段重新对齐受影响区间并列为未完全验证。\n\n## 精校逐字稿是文本唯一真相源\n\n开工先扫素材目录找用户的人工精校逐字稿（项目文件夹常见 `*逐字稿*.txt`）：有则它是字幕文本的唯一真相源，字幕校对以它对照 ASR 词表逐词修正，**禁止在 ASR 错词上自行猜测修正**。ASR 三大高发：**数字吞位**（「500 家」→「50 家」）、**繁体混入**、**专名错写**（品牌名/产品名/人名类）。精校稿与音频不一致时以音频实际说出的内容为准；拿不准的专名列待确认，不凭常识硬猜。\n\n## ASR 准备与缓存\n\n- 转写前先盘点语言、说话人数、专业术语和可能出现的数字；工具支持热词/提示词/说话人分离时按当前素材启用——热词只提供候选拼写，不覆盖实际发音和上下文判断。\n- 说话人标签帮助多 Take/访谈选择，不得把不确定身份写成真实姓名；笑声、叹气、掌声等事件保留为剪辑信号，字幕是否显示另行判断。\n- 转写按源素材缓存；源文件未变化时复用。内容删除、重排或变速后需要的是**剪后时间线转写**，不是无条件重转每个源文件。\n\n## 词表机制（把 `templates/terminology.template.json` 变成你的）\n\nASR 对品牌、专名、数字的误听是系统性的，逐次手修永远修不完。机制：\n\n1. **维护一份词表**：`正确写法 → [常见误听...]`。开工先通读脚本/转写建立本片术语面。\n2. 源层修复用 `manage_transcript` fix（格式 `FIX [段号]: 词索引 -> \"正确词\"`，段号纯数字；不确定词索引先用 `preview` 探针试探；空串可删词）。一次只修有证据的词。\n3. **上下文优先于发音**：说话人口音导致的误听（如「500 家店」被听成「50 家店」），结合上下文判断该写什么，不盲从 ASR。\n4. 疑似语义错字（如「盈利/亏损」方向性词）必须试听确认后改，不凭常识盲改。\n5. 每次剪辑发现新误听就回写词表——词表是唯一维护点，别散落在对话里。\n\n## 气口分卡\n\n「一个可独立理解的气口 = 一张单行字幕卡」。优先在这些位置切卡：明显吸气或停顿、语调落下、主谓宾完整、转折/因果/列举的自然边界。避免：按固定字数机械切割、拆开定语与中心词、把上句结尾和下句开头拼一张卡、2–5 字连续闪卡。\n\n- 经验范围：一张卡约 8–24 个汉字、0.8–3 秒（1.2–1.3x 变速下尤其避免长字串停留过短）。\n- 标点：卡内自然停顿保留逗号；卡片正好在逗号处切换时删除行尾逗号（切卡本身已表达停顿）；句末句号/问号/感叹号保留。\n- 分页原语：`forcePageBreak` 开新卡、`keepWithPrevious` 并卡、`hidden` 藏口头词。**keepWithPrevious 禁止跨剪辑点长链连打**（会把两个气口粘成超长单行）；同一处连修 3 轮仍被引擎拆开就停手——回读结构找真断点（往往在素材切点），或回源层重建。ChatCut 分页引擎的机器路径（词级 key 获取、forced break 间距 ≤ 每行上限、源 item 边界强分页、split 后 key 前缀更换）见 `chatcut-field-notes.md` 字幕节。\n- display override 低自由度：结构化审计数据必须同时保存原词 `sourceText` 与显示词 `text`，validator 由两者差异推导 override，不能靠输入方自报 `edited`；`edited` 仅保留为旧适配器的一致性断言。`text` 只校正当前词的同一词汇单元；禁止把整句写到一个短词 key 上再藏其他词（产出「文字对但只闪一帧」的伪合并）。批量 override 每批 ≤ 约 15 条，提交后立即回读（大批量会局部写入）。\n\n## 单行发布门禁（机器化）\n\n样式值只是输入，viewer-facing 结果才是验收对象：\n\n1. 应用样式/profile 后立即回读配置：`maxLines` 必须为 1，发现 2 直接停。不可放宽的发布策略在 `rules/policy.json`（单行、禁自动换行、原文源、词级审计、毫秒短卡、繁体零容忍）；profile 只能校准字号、字符数和布局，试图放宽策略 = 直接失败。\n2. 全片每页 `lines=1`；最长页、英文术语页、数字页抽帧看真实像素。\n3. 短卡按**时间**而非帧数判定（30/60fps 得到等价结果）：`<450ms` 一律失败；`450–800ms` 只允许词表白名单里的英文品牌/缩写完整卡（如 AI、CLI、ETL）。单字卡=0。\n4. 最终回读带 `words=true`，优先保存为符合 `schemas/captions.schema.json` 的结构化 JSON，跑校验脚本：\n\n```bash\nnode scripts/validate-caption-pages.mjs \\\n  --strict \\\n  --profile <你的 operating-profile.json> \\\n  --root <profile 配置根目录> \\\n  --input <captions.json 或 read_captions 输出.txt>\n```\n\n发布态使用 `--strict`：warning 也会阻断；可继承的 profile 用 `--root` 显式限定其配置根目录。结构化字幕先过 `captions.schema.json`，metadata 必须把 `projectId`、`timelineId`、`timelineRevision`、`sourceAssetId`、`sourceRevision` 五项一起绑定，并与 resolved profile 的项目、时间线成员关系、`validatedTimelineRevisions[timelineId]`、`validatedSourceRevisions[sourceAssetId]` 逐项精确一致；缺项、空值、只填一部分或已记录证据不等都失败。每个 word 继承 document 的 timeline 绑定，另外显式保存全片唯一的 `sourceWordKey`、`sourceAssetId`、`sourceRevision` 和 `sourceText`/`text`；旧 JSON 缺这些词级绑定仅能在非严格迁移模式告警通过。\n\n`sourceText != text` 时必须有 `correction`（`approved/reason/evidenceRefs/reviewedBy/reviewedAt`）；命中词表时还要引用稳定 `termId`。数字、金额、日期、百分比、单位、否定变化，以及声明了 `risk` 或 `requiresAudioEvidence` 的词表校正，至少要有一个 `audio:` 证据。450–800ms 短卡要在 `shortCardEvidence` 中同时给 reviewer 和 `frame:`/`pixel:`/`image:` 像素证据，严格模式才放行。真实 CR/LF 无论 `lines` 写几都失败；`A / B`、`m/s` 之类正文斜杠不是换行证据。\n\n退出码非 0 = 未完成，不得只报「已设置单行」。脚本检查配置、实际行数、字符上限、单字卡、毫秒短卡、全文 word key 唯一、页/词安全整数区间与顺序/重叠、数值符号语义、文本一致性、繁体、override 滥用与术语黑名单；旧文本输入仅作迁移兼容。个人词表可用 `--terms <你的词表.json>` 覆盖 profile 里的 `terminologyFile`（本地个人层用法见 SKILL.md）。\n\n## 起始样式基线（作者实测，填进你自己的 profile 后以你的为准）\n\n- 横版 1920×1080：得意黑（Smiley Sans）700、38–42px、单行、每行 ≤22 字、底部安全区居中、黑底或主题 surface 圆角底板。\n- 竖版 1080×1920：84px、单行、每行 ≈13 字、`top≈1563` 底部安全区（72px 在手机观看距离下偏小）。\n- 单行装不下时：先重分气口 → 再扩安全宽度 → 最后才小幅减字号；**不允许自动换行**。\n\n## 故障恢复速查\n\n- 字幕突然变英文 → 查源绑定（见上），切回中文源重建，不在英文结果上继续编辑。\n- 修了字幕画面没变 → 只创建了变体没选择它；应用 source 后立即回读。\n- 一次隐藏导致整段消失 → display key 被多实例共享；撤回最新 override，回源层修。\n- 同句极短区间重复闪烁 → 查分页 key 重复；回源层重建该段，不用隐藏共享 key「消重」。\n- 变速片的精确落刀 → `find_transcript` 词级帧未折算 playbackRate，按源时间换算。\n\nFile v1.4.0:references/chatcut-field-notes.md\n\n# ChatCut 宿主实测行为档案\n\nChatCut 宿主实测行为的唯一权威位（2026-07 实战批量剪辑 + 一场约 15 分钟母片全片重构会话实证；其他分册引用本文件，不复制结论）。每条按「现象 → 判定 → 正确动作」。工具行为可能随版本变化：同类操作首次执行前用一个代表对象复验，复验失败以当前实测为准并回写你自己的档案副本。\n\n## 几何与渲染\n\n- **crop 语义 = 框内裁显示区**。`rect + crop` 的可见区 = rect 向内收缩（`可见左 = left + width×cropLeft`，余同），显示内容为源的对应中间部分。要让可见区落在目标框：反向放大 rect（`width = 目标宽/(1−cropL−cropR)`），再按可见区反推 left/top。\n- **keepAspectRatio 校验层与渲染层语义不一致**：校验按「crop 后源比例 vs 框比例」拦截，渲染按上一条执行。绕过法 = 两步提交：先「rect+清 crop」（框比例≈源比例可过），再单独补 crop。禁止改框保留旧 crop（二次裁切事故，红线已列）。\n- **编辑器预览（WebGL）与云端渲染对同一份数据可能给出不同画面**（crop 解释差异实证）。**成片以云端渲染帧（`view_timeline_frames`，renderedBy=cloud）为准**；用户在编辑器看到错位时，先渲染同帧云端对照再定性，并提醒刷新编辑器（旧几何有缓存）。\n- **borderRadius 作用于裁后可见区**（非 rect 外框）。正圆判定沿用红线公式。\n\n## 窗口动画（ChatCut 专属实现档）\n\n- **MG 媒体槽失效**：`create_motion_graphic_from_code` 的 `video`/`image` 属性，资产引用对象与裸 assetId 两种格式均可存储，但运行时一律解析为空字符串（画面内打印 `item.props` 实证）。**过渡四档链第 2/3 档（JSX 实时媒体 MG / 接缝定帧 MG）在 ChatCut 当前版本直接跳过**，不再探针。\n- **正解 = 满屏 item + 窗口 reframe shader**（与三层合成契约「不把 item 缩成 PiP」一致）：\n  - `submit_shader` 生成 effect：参数 = 起/止窗口矩形+圆角（归一化，radius 基于画布高）、起/止源子矩形（归一化 UV）、feather；进度 = effect 覆盖区间内 0→1，ease-in-out cubic；窗外输出真透明。start=end 即静态稳定态窗。\n  - 挂载：`mode:\"track-bound\"` + trackId + trackBoundFrom/Duration，**per-item 挂载，不跨 item 缝**（每个稳定段内逐 item 一个 FX；过渡 FX 单独约 12 帧）。\n  - 过渡窗口默认放前段尾部约 12 帧（句前气口提前启动、关键句落稳）；纯录屏态→人物态的人物侧例外放后段头部（前段人物 opacity=0 不可见）。全屏态↔窗口态过渡：全屏端窗 = 全画幅 `(0,0,1,1,r0)` + 全幅源。\n  - 圆窗参数换算示例（1080p）：可见圆 330px@(1470,528) → win(0.765625, 0.488889, 0.171875, 0.305556) r0.152778；源子矩形 = 旧 crop 区间（如 x0.218058 w0.562181）。数值属实测起点示例，按你的版式坐标重算。\n- **框线与过渡的所有权**：框线 item 区间 = 稳定段区间抠掉段尾过渡窗口；过渡窗口内框线不在场（单一 owner），新段起点由入场动画（drawFrames）衔接。\n- **shader 生成为 beta**：提交前按官方要求向用户提示并取得确认；生成后第一验证点 = 时间进度是否生效（渲染过渡中点帧）。\n\n## S 态（纯录屏全屏）实现\n\n- 窗口 shader 的收拢过渡把 endWin 尺寸设为极小值（如 0.0001）收到人物窗圆心，即「人物退场」观感。\n- S 段的人物 item 先 `split_item` 造缝，再 opacity=0（音频 anchor 不断，人物仍唯一可听）。\n- S 态进出的缝一律由 split 落在气口上，不在句中切。\n\n## 字幕（ChatCut 分页引擎机器路径）\n\n字幕文本真相源与词表刀法见 `captions-terminology.md`（权威位）；本节只记录 ChatCut 引擎的实测行为。\n\n- **分页引擎默认按长度预算硬切**（break=length），会拆词断短语。按气口分卡的机器路径：\n  1. `read_captions {json:{words:true}}` 拿词级 key（全片输出可能超限——落文件后 jq/python 提取；`frame` 参数实测无效，始终返回全片）。\n  2. `edit_captions {action:\"display_text\", json:{overrides:[{key, forcePageBreak:true}]}}` 在气口词上打强制分页。\n  3. **forced break 之间的片段控制在 ≤22 显示字**（以你 profile 的每行上限为准），引擎就不再插 length 切。\n  4. `{key, hidden:true}` 隐藏 ASR 多转词；`{key, text}` 做词文本覆盖（低自由度规则见 `captions-terminology.md`）。\n- **源 item 边界（sourceStart 跳变处）的分页行为不稳定**：一次会话实测引擎自动强分页（跨缝句子无法合并），另一次实测可跨缝合页——按当次回读为准，跨缝合页必须显式验证，不合并时在缝前词打显式断点兜底。`split_item` 出来的连续两段始终可跨（源连续）。\n- **hidden 词槽会阻断跨槽合页**：被 `{key,hidden:true}` 隐藏的词仍占分页槽位，其前后两页无法合并。需要合页时改用 un-hide + 文本覆盖方案绕开，或接受该处分页。\n- **split_item 会更换 item id**：其名下词 key 前缀随之变化——`text`/`hidden` override 幸存，但 `forcePageBreak` 需按新前缀重设。**纪律 = 结构性 split 先做完，再设字幕断点。**\n- 字幕字体必须 `search_fonts` 命中（Google Fonts 或项目自定义字体，如得意黑 = `Smiley Sans (custom)` 需已在项目字体库）。样式修改：`edit_captions` `action:\"style\"` + **`json` 参数**（`style`/平铺字段无效，报 \"No style changes specified\"）。\n\n## 音频层基线\n\n- audio item 省略 trackId 时自动建 A1（复用 compatible 轨）；显式给新 alias（如 `\"A2\"`）强制建新轨。\n- library 音效直接用 `library:sound:<id>` 作 assetId。\n- 实测起点音量：过渡 whoosh 约 `-12dB`、卡点重音约 `-10dB`、BGM（`submit_music` 生成 60s 循环铺底）约 `-24dB`；音量不夺讲解人 anchor。**听感必须标 `unverified` 交用户耳测**——参数正确不算通过。\n\n## 外部 MG 章节卡链路（hyperframes 类工具）\n\n静态章节卡枯燥时可走外部 motion-graphics 工具（如 hyperframes 的 kinetic-type workflow）产 MP4 再导入：\n\n- 对比度门（WCAG 大字 3:1）会拦文字色，需调深（实测例：`#14B8A6` → `#0D9488`）。\n- root 的 `data-duration` 锁死总帧数，改时长先改它。\n- 渲染完成后 `import_media` 进 ChatCut，按普通素材摆放；MG 内音频保持静音，anchor 不变。\n\n## 隐私扫描 SOP（源头规避优先）\n\n1. 全源每 30s 抽帧拼 contact sheet（ffmpeg tile），人眼定位二维码/敏感窗口；危险区每 5–20s 精扫定边界。\n2. 用 `find_transcript` 搜关键句锚定各段源时刻，再对撞码风险段逐 item 读 `sourceStartFromInSeconds`，求「段源区间 ∩ 敏感窗口」。**插叙段必查**——A-roll 跨插的句子源时刻可能远离本幕主体（实证：某片幕 1 的插叙句源时刻位于片尾二维码区）。\n3. 命中处置：**观点段录屏镜像 sourceStart 平移到最近的语义贴合静止无码页**（演示段才要求同刻，观点段录屏是氛围证据）；无法平移才用独立不透明 redaction 层遮挡。平移后渲染复验。\n4. 全量审计仍逐段渲染兜底——扫描阶段的遗漏以渲染帧为最后防线。\n\n## 工具面杂项\n\n- `apply_script` 结果可超限：落文件用 jq 提取 timelineMd/libraryDocs。转写段号 ≠ 文件行号，全量核对后再用。\n- MG item 不支持 `playbackRate`（报错）；MG 资产时长动画用 `useVideoConfig().durationInFrames` 动态计算，不写死帧号。\n- MG per-instance 属性字段名 = `propertyOverrides`；`edit_item` updates 字段 = `id`/`fromFrame`；deletes 元素是 `{id}` 对象。\n- `track_progress`：`jobIds` 传裸字符串（数组会被字面化导致 not found）；`wait` 不真阻塞，配后台计时器轮询。\n- 大批量 `edit_item` 超时 = 服务端可能仍在执行：等待后回读验证，不盲目重发。\n- 宿主几何公式（蒙版原点/radius 语义/override 模式/lane 顺序/导出帧域）仅在 `templates/compatibility.template.json` 对应探针通过后使用；效果 lane 顺序陷阱与 fx-mask 坐标细则见 `face-reframe.md`（该处为权威位）。\n\n## 双端预览（验收播放路由）\n\n用户验收播放优先级（SKILL.md 验收节引用本节，此处为权威位）：\n\n1. **本地 ChatCut Mac 客户端**（探测 `/Applications/ChatCut.app`，`open -a ChatCut` 可拉起）：引导用户在 App 中打开同一项目并跳到目标时间码验收——与代理进程独立，互不拖累。\n2. 未安装时**提示一次**可从 chatcut.io 官网下载客户端（可选，不强推）。\n3. 兜底 = 系统默认浏览器打开 `get_editor_url`（明示网页端可能卡顿，重画面验收建议装客户端）。\n\n代理侧验证不受此影响：云端渲染帧始终是代理的像素证据源。\n\nFile v1.4.0:references/dual-frame-layouts.md\n\n# 双画面版式系统\n\n「录屏画面 1 + 主讲人画面 2」的双画面构图：横竖版各 4 套具名版式、语义选型决策器、小窗腾挪规则。坐标真相源 = `assets/compositions.json`（本包内置快照，画布 16:9 1920×1080 / 9:16 1080×1920，均 30fps）。\n\n## 版式总表\n\n| 画幅 | layoutId | 名称 | 主讲人形态 | 何时用 |\n| --- | --- | --- | --- | --- |\n| 16:9 | `landscape-screen-pip-right` | 录屏主画面 · 右下人像 | 330px 正圆 | 横版演示默认态 |\n| 16:9 | `landscape-screen-pip-left` | 录屏主画面 · 左下人像 | 330px 正圆 | 录屏右侧有关键 UI 时避让 |\n| 16:9 | `landscape-split-right` | 左屏右人 · 专业分栏 | 418×784 圆角矩形 | 讲解与表情同等重要 |\n| 16:9 | `landscape-presenter-focus` | 操作讲解 · 人物加强 | 608×742 圆角矩形 | 观点/转折/情绪承接 |\n| 9:16 | `portrait-screen-top-speaker-center` | 上屏下人 · 经典口播 | 480px 正圆居中 | 竖版演示默认态 |\n| 9:16 | `portrait-screen-focus-pip-right` | 录屏放大 · 右下人像 | 400px 正圆 | 密集 UI 定向裁切、避让左侧核心区 |\n| 9:16 | `portrait-split-stack` | 录屏与人 · 上下分屏 | 936×500 矩形 | 手势/上半身表达需保留 |\n| 9:16 | `portrait-speaker-focus-cutout` | 录屏证据 · 人物强表达 | 610×650 透明抠像 | 强观点段（需抠像素材） |\n\n每个版式在 `compositions.json` 里都带 screen/speaker/title/point/subtitle 五个区域的精确坐标与圆角；字幕基线横版 40px、竖版 84px 单行。\n\n## 三态叙事骨架 → 七个执行状态\n\n口播画面在三个叙事态间流转：**A 人物全屏**（钩子/结论/转折/强情绪）、**B 双画面**（演示/操作/数据）、**C 人物加强**（演示段落里的观点承接）。落时间线时把 B、C 各拆成两个可操作状态，并显式加入 S 纯录屏与 P 隐私覆盖——这样能机器检查 owner、合法转向和隐私覆盖，不把圆形、矩形、全屏当作轮播预设：\n\n| 执行状态 | 进入信号 | 退出信号 |\n| --- | --- | --- |\n| **A 全屏人物** | 开场钩子、强转折、重大结论、收尾 | 开始展示必须看清的屏幕证据 |\n| **B-R 右侧圆窗** | 步骤/按钮/字段/数字/连续操作，关键 UI 在左中部 | 关键 UI 移到右侧，或话语转入解释 |\n| **B-L 左侧圆窗** | 关键 UI、鼠标路径或字幕保护区在右侧 | UI 重心换边 |\n| **C1 专业分栏** | 「为什么」「背后的逻辑」等解释段，仍需屏幕上下文 | 回到连续操作，或结论强到应回 A |\n| **C2 人物加强** | 「真正重要的是…」「所以我的结论是…」等观点句 | 进入必须看清的细节操作 |\n| **S 纯录屏** | 密集 UI、连续操作或人物遮挡关键证据；人物隐藏但 anchor 仍唯一可听 | 需要人物陪伴、解释或结论强调 |\n| **P 隐私覆盖** | 检出二维码、账号、手机号、密钥或个人数据 | 敏感内容已离开画面且边界复验通过 |\n\nP 是**独立、不透明、全区间**的 redaction owner，可与叙事状态重叠；人物大矩形与录屏裁切只能改善构图，**不能作为隐私安全保证**。redaction 必须覆盖每个稳定态、全部过渡和边界帧；部分遮挡=失败（ChatCut 端的源头平移优先处置见 `chatcut-field-notes.md` 隐私扫描 SOP）。\n\n**双素材呼吸感**：人物和录屏是两个平等的呼吸主体，各自都应该有放大到全屏/近全屏的时刻——人物升 A、录屏升 S 交替出现，不能只让人物变而录屏永远蹲在窗里。长片（>5 分钟）每幕至少评估一次 S 态机会（关键操作、纯屏幕证据、画面自身有叙事力的段落）；A 与 S 的交替是节奏的上限刺激，不是例外。\n\n### 选型决策顺序（前项可否决后项）\n\n1. **隐私与安全**：二维码、账号、密钥必须先消失。\n2. **屏幕证据**：观众必须看清什么？证据密集优先 B；关键 UI 决定人物在左还是右。\n3. **人物强调**：这句话靠表情/判断/情绪成立吗？解释原因优先 C1，强观点优先 C2，屏幕已无必要证据才升 A。\n4. **字幕负载**：长字幕、连续数字、英文命令占用阅读带宽，保持 B 或克制的 C1。\n5. **新鲜感提醒**：约 30–45 秒无构图变化时触发**复查**——但时间不是自动切换器，连续操作仍需完整证据时有理由保持 B。\n\n### 切换落点与节奏\n\n- 切换只落在**气口或章节边界**，不在句中切。关键句需要放大人物时，在句前气口提前约 0.3–0.6 秒起动，让画面在关键句首个有效音节附近落稳。\n- 相邻两次状态变化之间至少完成一个完整语义单元；常规停留约 4–6 秒以上（A 常见 2–6s，C2 约 4–12s，C1 约 10–25s——样片起点，非硬计时器）。\n- 45–90 秒切片通常 3–5 个状态段，90–120 秒通常 4–7 个；每次人物放大都应对应更重要的一句话，每次缩小都应因为录屏证据更有价值。连续两次只换形状/换边却没有语义变化 = 装饰性抖动，合并。\n- 单一构图连续超过约 25 秒按静态失败复查。\n\n## 状态落地的原子契约\n\n状态表落到时间线时，把每个稳定态写成半开区间 `[startFrame,endFrame)`，同区间的三项视为一个不可拆的提交单元：①录屏层的 rect、fit/crop 与静音状态；②人物层的可见 rect、窗形/蒙版、内部取景与主音频归属；③共享框线/装饰的状态与人物轮廓 knockout。\n\n- **状态表最少字段**：`stateId | [start,end) | 三层参数 | inTransitionId | outTransitionId | privacy | semanticReason`。这也是 SKILL.md「状态表先行」硬闸要求请用户过目的表。\n- **按区间相交审计**，不按 item 起点猜状态：每个媒体 item 必须只命中一个稳定态；同时与两个状态相交时，先在合法气口拆分 item 或把状态边界移到已有切点，再同步三层。禁止先改人物与框线、以后再补录屏。\n- 每个可见的非字幕 item/FX 必须且只能绑定一个 owner（开场/稳定态/过渡/片尾）；装饰层区间不越出宿主状态区间，跨多个宿主就在边界拆实例。owner 不明的旧 MG、probe、孤儿 FX、未知 override 都阻止交付。\n- 宿主没有事务 API 时也按逻辑事务执行：`validateOnly → 保存修改前值 → 写入三层 → 结构回读 → 精确帧`；任一层失败即恢复修改前值并复验，不带着半成品推进下一状态或扩散到批量。\n- 把 `outroStart` 作为明确帧号写入状态表；正文所有 owner 的区间必须在 `outroStart` 之前结束，`[outroStart,timelineEnd)` 只允许收束 owner 可见（片尾孤儿框线是高频事故，验收门禁见 `operating-manual.md`）。\n\n## 小窗腾挪\n\n主讲人小窗的位置变化服务于录屏讲解，不是装饰运动：\n\n- **避让为先**：小窗不压当前讲解的 UI、数值、光标轨迹；录屏重点区换边时小窗换到对侧（pip-right/pip-left 即此用途）。\n- 同版式内的位置平移在**气口处一次到位**，不做常驻漂移动画；跨版式结构变化只在章节/主题切换处做。\n- 频率约束：位置变化次数 ≤ 叙事状态数。\n- 每次落位后重跑保护区检查：不压字幕、不压关键 UI、区域边界不重叠。\n\n## 竖版补充\n\n- 竖版不是横版缩小补黑边。录屏按页面信息密度分级裁切：全貌约 5% / 概念页约 8% / 表格与密集 UI 约 10% 或定向裁切；每次裁切保护正在讲解的标题、数值、按钮、字段与光标。\n- 竖版有两套并行的文字体系，不得混用：**字幕体系**（手机端单行字幕，84px 基线，见 `captions-terminology.md`）和**包装体系**（顶栏/章节标签/观点条/页脚等信息舞台文字，约 32px 起步、分档到 112–126px）。包装体系的小号副文不是字幕的备选字号；不要为塞更多装饰文字缩小字号。\n- 裁切按镜头任务切换，不按固定秒数：同一页面先全貌、说到具体信息切局部、需要时回结果全貌；录屏窗口保持稳定尺寸，改变的是内部画面焦点。\n- 内容保护区：录屏、讲解人、观点条、字幕边界不重叠，相邻区域保留约 10–45px 空隙。\n- 目标平台含微信视频号时，字幕与关键包装收进中央 6:7 区域（1080×1260，y≈330–1590），或单独交付重排变体。\n- 最终以手机观看距离验收：把代表帧缩到约 25–30% 再检查一遍字幕与录屏文字可读性。\n\nFile v1.4.0:references/face-reframe.md\n\n# 人脸取景与三层合成\n\n主讲人窗的非破坏合成、人脸居中漂移、蒙版参数与黑边排查。这是全包实测密度最高的一册——坐标系陷阱都是真机验出来的。\n\n## 三层非破坏合成（铁律）\n\n主讲人 PiP **不是**把人物视频裁成圆形。为了既能内部居中、又不破坏连续过渡：\n\n| 层 | 职责 | 约束 |\n| --- | --- | --- |\n| 录屏层 | 底层证据画面 | 保持既定 rect、crop/fit、静音 |\n| 完整人物层 | 原始人物视频与内部取景 | **保留完整源画幅**（item 本身 `crop*=0`、`borderRadius=0`），只用等比 reframe 改窗内取景 |\n| Alpha 窗口层 | 圆形/圆角矩形的可见边界 | 独立蒙版冻结中心、尺寸、形状；描边沿蒙版外缘 |\n\n把人物 item 直接裁成 PiP 的破坏性做法，会让后续一切「圆窗↔矩形↔全屏」连续过渡无法实现。ChatCut 宿主上，「满屏 item + 窗口 reframe shader」路线（见 `chatcut-field-notes.md`）与本契约同构——item 仍保留完整源画幅，窗口由 shader 切出。\n\n## 效果顺序：reframe → mask →（描边/阴影）\n\n视觉意图顺序永远是 **先 reframe（在完整画幅内平移/等比缩放）→ 后 mask（切出可见窗口）→ 描边/阴影只沿最终蒙版边界绘制**。反过来（先 mask 后 reframe）会让 reframe 从蒙版外的透明区采到黑色 RGB，产出大黑圆、黑条或「窗形还在、内部发黑」。\n\n自定义 reframe shader 的同类错位：RGB 取自映射后的 `uvMapped`、Alpha 却沿用映射前的 `v_texCoord` 时，一旦上游已被 mask，效果会保留窗口 Alpha、同时从透明区采到黑色 RGB——「外形还在、里面大片发黑」的特征故障。修正效果顺序；新写 reframe shader 时让 RGB/Alpha 的采样坐标与透明语义一致，并把越界当作失败，不把 `clamp(uvMapped, 0, 1)` 的边缘拉丝当有效 overscan。\n\n**实测创建顺序陷阱**（须每个新会话探针复验）：ChatCut 的 FX lane 编号与创建顺序可能相反——同一 clip 上想要 `reframe → mask` 的执行序，实际要**先 add mask、后 add reframe**，回读得到 reframe=lane 1、mask=lane 2 才是正确执行序。不要凭添加数组顺序判断，结构回读 lane + 用明显 offset 的单帧探针确认「人物移动、窗口不动、窗口外仍透明」。\n\n## 蒙版参数与坐标系（GL UV，Y 轴原点在底部）\n\n内建蒙版的已验证字段（新会话仍先回读工具描述）：\n\n- 圆形 `fx-circle-mask`：`center_x`、`center_y`、`radius`、`feather`、`invert`。对画布 `W×H`、直径 `d`、左上角 `(x,y)`：`center_x=(x+d/2)/W`、`center_y=(y+d/2)/H`、**`radius = d/min(W,H)`（radius 值对应的是直径！）**，像素半径 = `radius × min(W,H) × 0.5`。\n- 圆角矩形 `fx-rect-mask`：`width=w/W`、`height=h/H`，`corner_radius` 用像素值。\n- 坐标按 GL UV 惯例，**Y 原点可能在底部**——按左上原点直觉算 Y 会整体翻转错位。先做单参数探针钉死原点方向再批量。\n- 蒙版外必须输出真实 Alpha（透明），「用黑色填外部」不是透明；`feather` 从 1px 起步。\n\n`propertyOverrides` 是**整包替换不是 PATCH**：只传一个字段会丢掉其余全部参数（巨脸/黑块的常见假象根因）。任何更新都完整重传参数组并立即结构回读。后端不校验未知字段——提交成功 ≠ 生效，必须单帧视觉验证。\n\n以上宿主公式（原点方向、radius 语义、override 模式、lane 顺序）都属会话内需复验的实现细节：复制 `templates/compatibility.template.json`，对应探针 `passed` 后才套公式，否则重新探测或走稳定降级。能力探针用短暂 buffer item 或代表性稳定片段，先记录原 geometry/opacity/FX；验证结束立即删除 probe FX 并回读整条轨道确认无残留——**探针残留本身就是 P0**，不能留给最终导出。\n\n## 居中 ≠ 贴脸（构图标准）\n\n圆窗合格构图至少保留：完整头发、额头上方呼吸位、颈肩和一部分上半身/环境。「头发刚好可见」只是最低边界不是标准；整张脸贴满窗口判过近。作者在 330px 圆窗+同类完整人物源上的实测起点是 `magnification≈0.30`（0.43 能看到头发但仍偏挤）——**这是个人基线不是常量**，换素材/窗口/画幅必须重新标定（写进你自己的 operating profile）。\n\n以双眼中点或脸部中心为目标：双眼落在窗口水平中央附近、垂直略高于中心。按说话段落设少量起终点做连续缓动，不逐帧追脸，不做肉眼可见的缩放呼吸。\n\n## 焦点保持换算\n\n若自定义 reframe 的映射为 `sampleUV = (outputUV - offset - pivot) / magnification + pivot`：\n\n```text\n把源焦点 faceCenter 映射到蒙版中心 maskCenter：\noffset = maskCenter - pivot - magnification × (faceCenter - pivot)\n\n已有稳定构图 (offset_old, m_old)，只改 magnification 并保持同一焦点：\noffset_new = maskCenter - pivot - (m_new / m_old) × (maskCenter - pivot - offset_old)\n```\n\n不要沿用旧 offset。改完先在一个代表段验证首/中/末帧与人物姿态极值，通过后才同步其他同态段；稳定态的 magnification/offset 一变，**所有进出该状态的过渡端点同步失效**，每个方向重新抽帧验证。\n\n## overscan 与黑边数学\n\n动画前先算源画面对蒙版四边的余量（overscan），位移必须落在余量内：\n\n```text\n平移约束：-rightOverscan ≤ dx ≤ leftOverscan（纵向同理）\n最小放大率：m ≥ max((maskW + 2|maxDx|)/baseW, (maskH + 2|maxDy|)/baseH)\n```\n\n- 横屏素材按高度铺满时纵向余量为 0——**想动 focalPointY 必须先等比放大产生余量**，否则必露黑。\n- 先从源帧识别有效画面边界 `safeSourceRect`：**源素材自带的黑条也在源 UV 内**，不能误当可用余量（这是「反复修不掉的黑月牙」的真根因）。\n- 除端点外还要检查缓动 20%/50%/80% 中间值与人物前倾/后仰极值——中间帧可能越界。\n\n**黑边零容忍**：任一精确帧在圆窗 12/3/6/9 点或矩形四边露出黑边、透明边、UV 拖影，立即撤销整段动态 reframe，回退最近通过验证的静态构图。不许继续放大碰运气，不许用底色或遮罩掩盖。用户看不到动态居中，优于看到黑边。\n\n## 故障分型速查\n\n| 现象 | 优先归因 | 正确动作 |\n| --- | --- | --- |\n| 框线/网格穿过人物 | 装饰层级高于人物或缺 knockout | 装饰移到人物下方；描边只沿蒙版外缘；不裁人物躲线 |\n| 圆窗一侧/顶部黑边 | 采样越出 safeSourceRect 或源自带黑条 | 对照源帧、查映射边界；回稳定静态 reframe |\n| 窗形正常但内部大黑块 | mask 在 reframe 之前执行 | 回读 lane，按「先建 mask 后建 reframe」重建，60fps 短导出复验 |\n| 只在一个导出帧闪一下 | MG 时间未按目标 fps 归一化，或过渡区间留缝 | 见 `motion-transitions.md` fps 归一化 |\n| 单帧白块/条带/缺人 | 媒体解码竞争或 Alpha 合成 | 按四档链降解码预算/换定帧；不改几何参数碰运气 |\n\n## 二次裁切事故（普通 PiP 也适用）\n\n回读里的 `width/height` 通常是**裁切前外框**，正圆判定看裁后可见区：\n\n```text\nvisibleWidth  = width  × (1 - cropLeft - cropRight)\nvisibleHeight = height × (1 - cropTop  - cropBottom)\n```\n\n典型正确结构：外框 533×300 + 左右合计裁 43.75% → 可见 300×300 + 圆角 150。把外框改成 300×300 却保留原裁切 = 可见宽被二次压到 169px = 叶片形/胶囊形/挤瘦人脸。成方策略二选一：显式裁切，或正方形 `fit:\"cover\"`——不叠加。修「原本是好的」的回归问题时，先复制同项目正常参考的**完整参数组**（尺寸/位置/四边 crop/fit/圆角），不重新设计。\n\nFile v1.4.0:references/graphics-blocks.md\n\n# 信息块类型与选用\n\nMotion Graphic / 设计图形按「信息块」组织:每块只承担一个任务、绑定一句具体口播、真实数据可追溯、不遮字幕/脸/关键 UI。没有对应证据信号就不加块——装饰性动效是负资产。\n\n## 十类信息块 × 何时用\n\n| 块 | 进入信号(口播里真实出现) | 禁忌 |\n| --- | --- | --- |\n| **标题卡** | 开场钩子句、章节切换 | 独占标题页 >1 秒;与第一句口播不同帧起 |\n| **大数字** | 数字承诺钩子、结论性数据(「500 家门店」「跳出率 45%」) | 数字无来源;一屏多个大数字互抢 |\n| **数字变化** | 前后对比、增长/下降过程(「从 3 天缩到 10 分钟」) | 滚动动画时长超过说这句话的时间 |\n| **趋势与对比图** | 真实数据的走势、排名、占比 | 彩虹渐变;重画一个「更好看但失真」的版本——真实录屏/截图优先 |\n| **步骤清单** | 「第一步…第二步…」连续操作讲解 | 步骤与口播进度不同步;一次全亮 |\n| **关键词强调条** | 短而有力的观点句、转折句 | 与字幕原句逐字重复;一条片超过 3–4 次 |\n| **章节导航** | 多段结构的进度提示(「三个部分的第二个」) | 为凑结构感硬加;信息流短片通常不需要 |\n| **代码/命令卡** | 真实命令、配置、报错信息 | 用示意代码替代真实可运行内容 |\n| **问答卡** | 提问开局的兑现时刻、观众高频疑问 | 自问自答堆砌;问题不是内容里真实存在的 |\n| **行动引导** | **仅当**用户明确要求,或素材中已有 CTA 且平台路由决定保留 | 默认不加——成片默认自然结束,这是红线不是偏好 |\n\n## 组合纪律\n\n- 一次全片扫描按「视觉机会组合」选块:优先覆盖最难只靠听觉理解的 3–7 个 beat,控制模板重复,连续三段不用同一种块。\n- 每块的进入/退出绑定口播句边界(气口),不按固定秒数轮播。\n- 块的样式从当前主题的 playbook 取(`assets/theme-kit/playbooks/<id>.md`),不逐块临时挑色。\n- 操作演示、数据结果、产品证据**优先真实录屏/原始截图**,信息块只做补充与归纳,不替代可验证的证据画面。\n- 每块出现前检查:字幕带、人脸区、关键 UI 三个保护区都不遮挡。\n\n## 画面任务路由（真实素材 vs 信息块）\n\n先按口播语义把同一概念、动作或证据归成一个小段，再判断这段画面的任务；不要按字幕卡机械地一张字幕换一个画面：\n\n| 口播任务 | 优先画面 | 不应做的事 |\n| --- | --- | --- |\n| 操作演示、软件步骤 | 当前真实录屏 | 用抽象动画替代可验证的操作 |\n| 数据结果、产品证明、报错 | 原始截图、结果页或对应录屏 | 重画一个「更好看」但失真的版本 |\n| 讲一张图、表或页面 | 原素材为主，叠加圈选、放大、标注 | 让装饰盖住关键数据 |\n| 概念、关系、流程、观点归纳 | 信息块 / 关键词动效 | 没有明确任务地堆卡片和动画 |\n| A-roll 跳切 | 有语义关联的 B-roll 或克制转场 | 用无关氛围素材掩盖内容断裂 |\n\n一段只解决一个主要视觉任务：真实素材负责可信度，动效负责解释关系；能用原录屏或原图证明的，不用抽象视觉取代。相同素材再次出现时承担不同任务（先全貌、再局部、最后回看结果）。生成资产的成本契约与降级预案见 `operating-manual.md`。\n\n## 与钩子三公式的对应\n\n- 数字承诺钩子 → 开场用**大数字**或**标题卡**兑现同一个数字\n- 模式打断钩子 → **关键词强调条**放大反直觉断言\n- 提问开局钩子 → 前 1/3 内用**问答卡**兑现答案(钩子与兑现成对,不放空承诺)\n\n## 块级动效词汇表\n\n块的动效收敛成三轴受限枚举——不在词汇表里的动效不用,主题各自的准许/禁用集见该主题 playbook「动效档」。\n\n**进场**(基线 10–16 帧 @30fps,一律按秒或归一化帧率写,见 `motion-transitions.md` fps 归一化):\n\n| 词 | 何时用 |\n| --- | --- |\n| 淡入 | 默认;一切块的保底进场 |\n| 上移入(淡入+轻上移) | 默认搭配;正文类块首选 |\n| 左入/右入 | 方向有语义时才用(前后对比、来路去向);不做装饰性换向 |\n| 缩放入 | 强调类块一次性使用(大数字/关键词条);同屏不叠用 |\n| 弹入 bounce | **默认禁**——「不弹跳」是全包基线;唯一豁免见活力青柠 playbook,且需用户点头 |\n\n**出场**:默认淡出(8–12 帧),优先随气口静默退场;镜像滑出仅当进场方向有语义;**不做戏剧化出场**——出场抢戏=信息块变装饰。\n\n**循环强调**:\n\n| 词 | 约束 |\n| --- | --- |\n| 脉冲 pulse | 仅数字/状态类块,全片 ≤1 次 |\n| 漂浮 float | 几乎不用——持续漂移与「录屏证据要稳」冲突 |\n| 闪烁 flicker | **禁**(观感廉价 + 光敏风险) |\n| 打字机 typewriter | 仅文字块,且仅当逐字出现本身有语义(如敲命令);不做默认花活 |\n\n**块 × 动效推荐**:标题卡=淡入+上移;大数字=缩放入或滚动到位(数字滚动时长不得超过说这句话的时间);步骤清单=逐项上移入 stagger(间隔约 0.1s);趋势图=从基线生长;关键词条=缩放入一次;其余默认上移入。同一条片同一种进场重复出现是正常的(一致性>花样),同屏两个块同时入场则错开 3–5 帧。\n\nFile v1.4.0:references/motion-transitions.md\n\n# 过渡动效工程\n\n主讲人窗在全屏 ↔ 圆窗 ↔ 矩形窗之间的连续过渡，以及一切带内部时间编排的 Motion Graphic 的工程契约。全部规则来自 60fps 真机导出的实测教训。\n\n## 审美基准\n\n过渡要「iOS 级灵动」而不是「安卓式生硬」：慢起、顺滑、长尾。技术落点——时长基线 21 帧（0.7s，30fps 时间线）；交叉淡化不是过渡（它只混合两张画面，不产生形状与位置的连续变化）。\n\n## 端点契约（最重要的一条）\n\n- 过渡首帧 = 前态可见画面；过渡末帧 = 后态可见画面；**下一帧的稳定画面与后态同位置、同尺寸、同形状**。正向与反向、每一种状态对（A→B、B→C、C→B、B→A）分别验收，不能用一个方向的成功替代其它方向。\n- 端点必须以**当前时间线的真实合成结果**冻结（x/y/裁后可见宽高/crop/焦点/圆角/层级），不能拿未经 crop 的媒体外框直接插值——中间态会出现叶片形、椭圆或人脸比例突变。\n- 稳定 PiP 至少提前 5–6 帧铺在过渡层下方；**过渡末帧不得把人物 opacity 降到 0**（下方没铺好就降 0 = 成片闪烁消失的头号根因）。\n- 末 2–3 帧不允许半透明交接：动画跑满最后一帧、端点像素级一致后，删掉一切 handoff 淡化，否则出双脸重影。\n\n## 帧数与归一化公式\n\n```text\nrawN = round(durationSeconds × fps)\nrawN < 2  → 直切处理，不冒充动画\nN = rawN；写入后回读实际首末可见帧，以实际 N 为准\n归一化进度 = localFrame / max(1, N-1)     ← 除以 N-1 不是 N\n```\n\n首帧严格 0、末帧严格 1。除以 N 会让末帧只到 (N-1)/N，下一帧残余跳变。\n\n## 分层缓动\n\n「硬」通常有三重根因：帧数太短、多属性共用一条前冲曲线、布尔阈值硬跳。修法：\n\n- 位移用 `Easing.bezier(0.32, 0, 0.12, 1)`；形变（尺寸/圆角）用 smoothstep；阴影随进度连续淡入，不用布尔阈值。\n- 三类属性**各自缓动**，不共用一条曲线（前冲曲线 t=20% 就完成 67%，观感必硬）。\n- 「先显著变圆、再完成退位」的观感可让圆角进度略早启动，但仍保持同一连续窗口和相同端点。\n\n## 单一合成所有者\n\n一个状态切换边界只留**一个**视觉过渡所有者。落新方案前先清理该边界已有的交叉溶解、淡入淡出、旧 MG、重叠 opacity 和遗留转场项——「几何动画 + 溶解」双重接管是重影和闪回的常见根因。视觉过渡不得顺手改变主音轨、录屏静音、播放速度、source time 或字幕时序。\n\n## 四档可靠性实现链\n\n按顺序选择能通过验证的最高保真路径；每个新会话先在一个代表边界做能力探针，以当前工具描述为真相源：\n\n**ChatCut 宿主快速路由（2026-07 实测，细则与参数契约见 `chatcut-field-notes.md` 窗口动画节）**：第 1 档无原生关键帧；第 2/3 档因 MG 媒体槽（`video`/`image` 属性）运行时失效直接跳过，不再探针；推荐档 = **满屏 item + 窗口 reframe shader**（`submit_shader` 生成，稳定态 start=end 静态窗、过渡态约 12 帧插值，track-bound per-item 挂载）——它同时实现稳定态三层合成与连续过渡。shader 生成不可用或被拒时才落第 4 档直切，降级仍需用户确认。\n\n1. **完整原生时间线关键帧**——工具明确支持位置/尺寸/裁切遮罩/圆角/easing 完整动画组才用；缺任一关键属性就不要用半套关键帧再靠溶解补洞。\n2. **JSX 实时媒体 MG**——`create_motion_graphic_from_code` 创建可编辑过渡资产；起终 rect、圆角按同一缓动进度插值；媒体槽在 item 生命周期内固定不换源。JSX 编译成功 ≠ `<Video>` 精确帧解码稳定。\n3. **JSX 接缝定帧 MG**——精确帧持续出现缺人/白块/黑块/条带时，把实时视频换成同一接缝的项目内定帧图；只用于约 0.3–0.6 秒短过渡且没有关键鼠标操作必须连续展示的区间；每个边界用自己的定帧，不跨段复用。\n4. **气口处直切**——前三档都不可靠时一帧到位；直切不伪装成动画，如实汇报降级原因。\n\n实测警告：一个短 MG 内同时跑两路全分辨率 `<Video>` + 动态 seek 是高风险组合（单帧白块/缺人的主根因）；几何 MG 方案在 60fps 真机导出下曾出现 300px 级位置瞬跳与双窗鬼影——**MG 档必须真机导出验证，不能纸面通过**。故障时按类别减少解码器/换定帧，不要反复调几何参数碰运气。\n\n## fps 归一化（最贵的坑）\n\n时间线 30fps ≠ 导出 30fps。实测导出可能是 50/60fps，MG 里所有按固定帧号写的时间会快 1.67–2 倍——动画跑一半就退场、人物凭空消失 0.17 秒。规则：\n\n```jsx\nconst frame = useCurrentFrame();\nconst { fps } = useVideoConfig();\nconst seconds = frame / fps;          // 首选：按秒编排\nconst f30 = frame * 30 / fps;         // 或：归一化后复用 30fps 阈值\n```\n\n所有 `interpolate(frame, ...)` 和 `frame < N` 一律切到 `seconds` 或 `f30`，不能只改部分章节。\n\n导出验证同理：`submit_export` 的区间参数按**输出帧域**解释，先换算 `exportFrame = round(timelineFrame × exportFps / timelineFps)`；下载后用 `ffprobe` 对账真实 fps/帧数/首尾内容——文件名写着 transition 不能替代对画面内容的检查。\n\n## 已验收动效的指纹守恒\n\n用户给出已验收参考片时，先把其行为冻结为可比对的动效指纹再动手：稳定状态序列；每个转场的方向、半开区间、时长、实现档位、规范化起终几何、easing 与关键 props。修改前后逐项比较 expected/actual——**静态窗、硬切、溶解或全画幅暗幕不能替代清单中的连续动画**；几何端点看似相同但动画实例消失、方向改变或效果数量归零，仍判回归失败。未另行声明时，几何容差 ≤1 个输出像素、时长容差 ≤1 个时间线帧，且仍需合成像素证据。只沿用背景、字幕色或小圆窗而遗漏人物加强态与切换密度，判为没有按参考执行。\n\n## 装饰层生命周期\n\n- 每个可见的非字幕 item/FX 都归属一个 owner（开场/稳定态/过渡/片尾）；装饰层区间不越出宿主状态区间。\n- 框线入场动效与生命周期是两件事：draw 动画只控进入段，**不能用 fadeOut 或超长 item 维持稳定态**；框线 item 的 `[start,end)` 与宿主状态完全相等，进入片尾前一切正文装饰精确结束（片尾孤儿框是高频事故）。\n- 片尾渐暗必须由单一最终合成层整体接管；多层各自淡出会透出下层旧画面、字幕悬黑底、逐层鬼影。做不到就只做约 0.35s 音频收束，画面自然结束。\n\n## 验证证据链\n\n- 每个过渡实例按目标帧域扫描过渡窗口；至少保存前态末帧、过渡首帧、约 20%/50%/80%、过渡末帧、后态首帧七个证据帧。同方向另一实例的证据不能代替。\n- 批量抽帧网格只用于筛查；可疑帧单独请求精确帧并独立复验 ≥2 次，不靠重复渲染到偶然成功。\n- 共享 MG 的代码、属性或媒体策略一改，之前所有方向的画面证据全部失效，重验全部实例。\n- 502/超时无画面证据时原样重试同一验证请求，不据此改时间线。\n\nFile v1.4.0:references/operating-manual.md\n\n# 逐片执行手册\n\n批量切片与逐片精修的执行契约、A-roll 删减增量、验证方法学与验收门禁。SKILL.md 五条第一性原则是本手册的上位法。\n\n## 一片一闭环\n\n一次只处理一个切片，按以下顺序完成后再进下一片。不得同时铺开多片修改。\n\n### 1. 冻结与盘点\n\n- 读 active timeline、所有轨道、字幕源、FX 和素材；记录 `timelineEnd`、`outroStart`、主音轨、录屏轨、人物轨、框线轨。\n- 「不动结构」时冻结内容清单（revision、源区间/切点、顺序、时长/速度、字幕时序、主音频映射）；有已验收参考时同时冻结视觉清单（状态序列、每个转场的方向/区间/时长/实现档、MG/FX owner）。\n- 列出所有可见 item/FX 的 owner；旧白块、重复人物、未知 MG/FX、跨片尾装饰和测试 probe 先入删除清单。\n\n### 2. 建状态表\n\n逐语义段标记 A/B-R/B-L/C1/C2/S/P 七执行状态（语义路由见 `dual-frame-layouts.md`）。P 是独立不透明 redaction owner，可与叙事状态重叠；人物大矩形与录屏裁切只承担构图。边界落在气口或现有切点。状态表先行是 SKILL.md 的硬闸：无状态表禁止批量 `edit_item`。\n\n### 3. 原子改画面\n\n- 先拆跨态媒体，再 `validateOnly` 校验整批 deletes/adds/updates，通过后原样提交。\n- 录屏统一应用 profile 裁切与静音；人物 anchor 唯一可听。\n- 框线实例区间必须与宿主状态完全一致；框线入场动画只管进入段（作者基线 `drawFrames=12`、`fadeOut=0`），在宿主区间精确结束。\n- 每次修复后回读整条轨道；框线轨区间并集必须等于需要框线的状态区间并集。\n\n### 4. 精修字幕\n\n按 `captions-terminology.md` 执行；先应用 profile 再立刻回读配置，`maxLines≠1` 即停。全量页审计，validator 必跑。\n\n### 5. 音频与气口\n\n- 人物 anchor 从第 0 帧可听；先测 integrated/short-term LUFS、true peak 与噪声底再决定增益。重复轨优先 mute/disable；只有宿主无此能力且已记录兼容证据时才降级到 `-60dB`。片尾 click guard 与自然收束分开命名，不用一个固定 fade 覆盖所有情况。\n- 连续片段按 `sourceStart + duration/fps × playbackRate` 对账，防前段静音后段重播。\n- 变速可从 1.2–1.3x 试听（保持音高）；先完成口误与停顿清理再整体提速，1.3x 让情绪失真时局部保留 1.15–1.25x，不全片机械统一。\n- 导出音频样片实听：开头 2 秒、每个源跳转接缝前后 1–1.5 秒、最后一句。**轨道结构连续≠听感连续**；gain/source 参数正确不算通过，必须有实听或电平证据。\n- 机械检查：`ffprobe` 时长对账 + `silencedetect`（-38dB）查静音段 + `volumedetect` 首 0.1/0.5/1.0s 窗有声。\n\n### 6. 收尾验收（门禁汇总）\n\n**结构门**：空窗=0、跨态未拆分 item=0、可闻重复轨=0、孤儿 MG/FX=0、未知 override=0、探针残留=0、未分配 redaction owner 的隐私候选=0、`[outroStart,timelineEnd)` 正文 owner=0。\n\n**字幕门**：validator exit=0、多行=0、超限=0、单字卡=0、`<450ms`=0、未批准 `<800ms`=0、繁体=0、已知术语错=0；硬规则读 `rules/policy.json`，数字/专名纠错必须有证据。\n\n**音频门**：首 0.1s 有声、接缝试听通过、片尾无硬截断、无双声。\n\n**像素门**：首帧、每个状态边界 `(N,N+1)` 帧对、过渡 20%/50%/80%、隐私窗口全程、`outroStart−1/0/+1`、最后一帧。无法读取像素时只报 `structure-pass / pixels-unverified`。\n\n**八道硬闸**（历史事故的回归闸门）：\n\n1. **片尾终止审计**：`outroStart` 起除收束 owner 外一切正文装饰必须已结束；逐帧查 `T−1`、`T`、收束中点、最后可见帧。\n2. **第二次出现即事故**：同一可见故障本任务第二次出现，停局部补丁，定位共享资产根因，修复后旧验证全部作废、全实例回归。\n3. **动效行为守恒**：修改已验收参考风格前先建可见行为清单（状态序列/每类形状转换/进入退出）；不得以静态窗、硬切或暗幕替代已存在的连续动画，除非用户明确批准降级。\n4. **首屏暗幕门禁**：第 0 帧至首句落稳，任何顶层包装不得降低脸部亮度或遮人物；需要暗幕/标题页须作为独立视觉段落经用户确认。\n5. **开场实听证据**：0–2 秒必须实际试听或电平检查；只看 gain/source 参数不算通过。\n6. **二维码全时间线扫描**：先全片扫描发现所有候选窗口，再逐 geometry/state 覆盖验证；不能用某一稳定态的通过顶替过渡窗口。\n7. **参考状态表带效果栈**：记录参考片的可见动效类型、持续、进入/退出方式与保护状态，防止只抄到配色。\n8. **全量回归矩阵**：共享 MG/模板/属性一改，所有引用切片各验至少一个相关精确帧，任一失败阻断扩散。\n\n## A-roll 内容（官方之上的增量）\n\n官方 `talking-head-guide` 已覆盖口癖两分法、retake 处理、停顿阈值与 Script 工作流，直接执行官方。以下是增量：\n\n- **一句话原则：删声音比删意思安全；错删信息的代价高于漏留口癖。**\n- 删前保后：句间重说删前版、句内重启只删错误片段、词头卡壳删第一个不完整词头、多次重说保留最后完整版。有证据或用户指定才反向。\n- 风险分级：低（明确空白、纯卡壳、逐字子集）小批处理后抽检；中（单个口头词、短句内重启、0.2–1s 停顿）听前后语境；高（整句、长片段、改写式重说、跑题、专业词附近）逐项核对保留版覆盖独有信息，没证据就保留或交用户。\n- 口播稿只做语义对齐与补漏，不逐字 diff，不用稿件替换说话人未说过的内容。\n- ASR 头尾盲区：完成删减后检查媒体真实开头结尾（开机动作、收尾杂音、伸手关录制）。\n- 候选删除清单≠实际落刀：回读最终时间线并试听实际切点。\n- 笑声、反应、结论后的留白、录屏操作停顿可能是内容，不当普通空白清除。\n- 信息流切片开头问候/自我介绍/铺垫默认删（预判定见 `retention-structure.md`）。\n\n## 批量流水线\n\n1. **切片指令契约**：锁定三要素 = 数量 + 单片时长档 + 目标平台（画幅/字幕位置/时长按 `retention-structure.md` 平台路由）。\n2. **源级资产单次化**：源转写、术语表、素材盘点全批次共享；逐片重转写视为违规。\n3. **选段人工闸门**：AI 选段在 transcript 面板逐段确认后才进下游。\n4. **模板层冻结**：字幕样式、色板、包装模板在样片确认后冻结；共性错误在模板层修一次全批生效。**但模板层只冻结共性——动效、气口、字幕必须逐片执行验收，逐片精修优先于批量模板化。**\n5. **代表片先行**：至少三类——R1 开场、R2 最复杂合成（录屏+人物+隐私/框线）、R3 最复杂片尾；代表片通过只证明模板可扩散，不豁免逐片门禁。\n6. **回归矩阵**：每受影响切片一行，记录开场 0–2s 实听、状态/动画清单对账、全部边界、隐私窗口、`outroStart` 交接、orphan/probe/未知 override 计数。每个 `pass` 绑定 timeline revision、帧域、准确帧和证据 ID；revision 或共享实现变化后全部转 `stale`。\n7. **重复缺陷计数**：按 `failureSignature + assetVersion + verificationEpoch` 统计；第二次出现走硬闸 2。用户指出的缺陷存为命名 canary（原始时间码+语义边界+失败签名），重定时后按语义边界重定位。\n\n### 多代理调度编制（宿主支持 spawn 时）\n\n- **分片包干**：批量审计按 2–4 片一组分包并行。\n- **单片三线**：精修期一片拆 结构/字幕/音频（或 视觉/脚本/字幕）三条只读审计线并行，修复归主线程；审计线不改项目、不切时间线，只交问题清单+精确 key。\n- **流水线重叠**：当前片收尾时即派下一片 preflight。\n- 子代理结论主动回传，不依赖轮询；审计与修复不并发互踩——结构冻结后再终验，冻结前的证据作废。\n\n## 生成资产纪律（ChatCut 生成工具）\n\n- **成本契约**：单次生成执行前必读工具显示的预估成本，超出用户已授权范围先报价再执行；一次任务预估生成调用 ≥3 次时，合并成一次提案报预估总成本让用户选全部/部分/不加，不逐条打断也不静默连发。\n- **降级预案**：生成服务有高峰期全线超时的历史，关键交付不押生成成功——每个生成资产预先声明降级备选（真实录屏局部放大 / 原始截图 / 静态卡 / 已入库 MG），连续三轮失败即切降级，与「自动修复三轮上限」共用同一出口。\n- **参考图先行（默认必做）**：任何 image/video 生成及风格敏感的 MG 生成前，先上传参考图——已冻结色板的样片帧、品牌截图或已确认切片的代表帧，再下生成 prompt。参考图是官方明示「显著改善结果」的第一杠杆，也是色板的像素级载体。\n- **两段式视频生成**：生成 B-roll 默认先用 image 生成产出首帧静态图并经人工确认，再以该图为起点跑 video 生成。证据类画面（操作演示、数据结果、报错）禁止用生成素材替代，两段式不构成豁免。\n- 生成/自动匹配的 B-roll 存在「重复且泛」的实锤：入片前查重并判断语义贴合，泛素材直接拒绝，不因生成成功就入片。\n\n## 验证方法学\n\n- **双证据原则**：分阶段 `read_project` 结构回读 + `view_timeline_frames` 合成像素，二者都过才算验证。\n- **抽帧法**：状态切换点取 `(N,N+1)` 帧对 + 末帧 + 每状态中段代表帧；过渡另取 20%/50%/80%。多帧下载后 `ffmpeg tile=3x3` 拼 contact sheet 一次目检，省 token 省审批。\n- **钳制帧双读**：时长边界帧号会被钳制到最后可见帧，双读比对一致再采信。\n- **批量网格只筛查**：可疑帧单独请求精确帧并独立复验 ≥2 次；不靠反复重渲染到偶然成功。\n- **写入成功≠落盘**：Zoom/FX 宣称添加成功后必须回读 fx-track 实例确认存在（曾发生批量「已加」实际 0 条）。\n- **素材池≠时间线**：正确资产存在于媒体池不算证据，必须验证 active timeline instance。\n- **变速换算**：`find_transcript` 词级帧未折算 `playbackRate`，精确落刀按源时间换算。\n- **shell 分工**：ffmpeg/ffprobe 只做证据加工（下载、拼图、音频指标、抽源帧对照）；不绕过 ChatCut 交付压平成片。宿主支持编程式批量调用时，读写比应远大于 1。\n- **502/传输错误**：无画面证据时原样重试同一验证请求，不据此改时间线（写操作报错先回读，见 `recovery.md`）。\n\n## 导出与帧率\n\n- 用户开口才导出。短导出授权按措辞记录为「仅指定样片」或「本任务同规格验证性短导出」；范围改变或进完整成片导出，重新确认；授权不跨任务/会话。\n- **帧率以实际文件为准**：30fps 时间线可能 60fps 导出；`submit_export` 区间参数按输出帧域解释，先换算 `exportFrame = round(timelineFrame × exportFps / timelineFps)`，下载后 `ffprobe` 对账真实 fps/帧数/首尾内容。文件名写着 transition 不能替代对画面内容的检查。\n- 未授权导出时如实标注「最终文件未验证」。\n\n## 编辑决策记录\n\n高影响决定（整句删除、重排、结构变更）保留：源区间、目标区间、口述/画面证据、理由、风险、下游依赖、状态。执行后以实际回读覆盖预计值。目的可解释可复查，不强制外部文件。\n\n## 止损与汇报\n\n- 自动修复最多连续三轮，每轮要有新证据和明确变化；三轮后停，保留最近可用版本，报告具体区间与人工检查点。\n- 卡死可产出带证据帧的交接 md 请外部 AI 复核；回件结论仍须本地验算后分级采纳。\n- 汇报：只描述可见结果，不暴露内部 key/id；每个「已完成」都能映射到 revision、帧域、准确帧和证据；`unverified` 明示原因与建议人工检查点，不静默打钩。\n\nArchive v1.3.0: 77 files, 151334 bytes\n\nFiles: assets/compositions.json (7164b), assets/theme-kit/AGENTS.md (1429b), assets/theme-kit/assets/backgrounds/01-deep-space-blue.svg (1779b), assets/theme-kit/assets/backgrounds/02-emerald-gold.svg (1625b), assets/theme-kit/assets/backgrounds/03-warm-gray-orange.svg (1721b), assets/theme-kit/assets/backgrounds/04-midnight-purple.svg (1626b), assets/theme-kit/assets/backgrounds/05-minimal-black-white.svg (1257b), assets/theme-kit/assets/backgrounds/06-sea-salt-cyan.svg (1573b), assets/theme-kit/assets/backgrounds/07-earth-brown.svg (1379b), assets/theme-kit/assets/backgrounds/08-vitality-lime.svg (1664b), assets/theme-kit/assets/overlays/safe-area.svg (747b), assets/theme-kit/assets/overlays/speaker-placeholder.svg (341b), assets/theme-kit/components/portrait-talk-card.css (12009b), assets/theme-kit/components/portrait-talk-card.html (529b), assets/theme-kit/components/portrait-talk-card.js (6771b), assets/theme-kit/docs/codex-prompt.md (1278b), assets/theme-kit/docs/layout-spec.md (1436b), assets/theme-kit/docs/theme-guide.md (1647b), assets/theme-kit/examples/demo-data.json (435b), assets/theme-kit/examples/PortraitTalkCard.tsx (1358b), assets/theme-kit/examples/single.html (4578b), assets/theme-kit/index.html (4361b), assets/theme-kit/manifest.json (2232b), assets/theme-kit/package.json (278b), assets/theme-kit/playbooks/01-deep-space-blue.md (2496b), assets/theme-kit/playbooks/02-emerald-gold.md (2320b), assets/theme-kit/playbooks/03-warm-gray-orange.md (2327b), assets/theme-kit/playbooks/04-midnight-purple.md (2192b), assets/theme-kit/playbooks/05-minimal-black-white.md (2219b), assets/theme-kit/playbooks/06-sea-salt-cyan.md (2454b), assets/theme-kit/playbooks/07-earth-brown.md (2230b), assets/theme-kit/playbooks/08-vitality-lime.md (2312b), assets/theme-kit/README.md (3136b), assets/theme-kit/requirements.txt (16b), assets/theme-kit/scripts/check-contrast.mjs (1340b), assets/theme-kit/scripts/render-backgrounds.py (406b), assets/theme-kit/tokens/layouts.json (8785b), assets/theme-kit/tokens/themes.css (5272b), assets/theme-kit/tokens/themes.json (13963b), assets/theme-kit/tokens/themes.schema.json (2357b), assets/theme-kit/tokens/themes.ts (15023b), CHANGELOG.md (13274b), docs/architecture.svg (7477b), LICENSE (1065b), package.json (292b), README.en.md (4673b), README.md (9504b), references/captions-terminology.md (7556b), references/chatcut-field-notes.md (8753b), references/dual-frame-layouts.md (8635b), references/face-reframe.md (7944b), references/graphics-blocks.md (5453b), references/motion-transitions.md (7453b), references/operating-manual.md (12418b), references/recovery.md (4528b), references/retention-structure.md (7572b), references/theme-palettes.md (6801b), rules/policy.json (1550b), schemas/captions.schema.json (2143b), schemas/compatibility.schema.json (1859b), schemas/policy.schema.json (1156b), schemas/profile.schema.json (2110b), schemas/terminology.schema.json (1425b), scripts/validate-caption-pages.mjs (13409b), skill-card.md (2979b), SKILL.md (11736b), templates/compatibility.template.json (943b), templates/examples.md (2418b), templates/local-config-example/aesthetics.example.md (1490b), templates/local-config-example/local-notes.example.md (906b), templates/local-config-example/profile/landscape.example.json (2218b), templates/local-config-example/README.md (1662b), templates/local-config-example/terminology.example.json (1137b), templates/operating-profile.template.json (2789b), templates/terminology.template.json (1972b), tests/caption-validator.test.mjs (7756b), _meta.json (138b)\n\nFile v1.3.0:SKILL.md\n\n---\nname: majia-chatcut-koubo\ndescription: ChatCut 口播/录屏视频代理剪辑的通用技巧包——官方 ChatCut skill 之上的增量层。覆盖：双画面版式（横竖版 8 套坐标/七执行状态）、8 套主题配色与对比度档位、过渡动效工程（四档可靠性链/端点契约/fps 归一化）、人脸居中与内部取景（三层合成/reframe→mask 顺序/坐标系陷阱/overscan 公式）、中文气口字幕与可自维护词表模板、机器化字幕门禁（validator+不可放宽 policy）、逐片执行手册与八道硬闸、ChatCut 宿主实测行为档案、留存结构与四平台路由、故障恢复、本地个人层（~/.config 叠加个人 profile/词表）。触发：ChatCut 剪口播、直播切片、画中画/圆窗、主讲人过渡动画、竖版重构、字幕气口、术语纠错、主题配色。前置：需已装官方 ChatCut skill / MCP 工具。非目标：不处理非视频剪辑任务，不替代官方工具本身的用法（工具怎么用一律以官方为准），本包只补剪辑审美与实测护栏。\nmetadata:\n  version: 1.3.0\n---\n\n# ChatCut口播 · 马甲实战版\n\nChatCut 口播剪辑的通用技巧包。把 ChatCut 当作最终可继续手工调整的非线性编辑器：所有剪辑交付留在项目和时间线上，以可见画面、可听声音和可读字幕为验收对象。\n\n## 与官方 skill 的分工\n\nChatCut 插件自带官方 skill（plugin-basics / talking-head-guide / transcription / verification / known-errors / create-motion-graphics 等），**工具怎么用一律以官方为准**，参数以当前 MCP 工具实时描述为真相源。\n\n本包只写官方没有的：**剪成什么样算好**（版式、配色、动效节奏、构图标准）、**实测踩坑护栏**（坐标系陷阱、fps 错位、验证方法）、**可复用资产**（8 版式坐标、8 主题色板、字幕校验脚本、词表模板）。与官方重复处以官方为准。\n\n## 五条第一性原则\n\n1. **内容真相**：成片的实际音频和当前时间线是唯一真相；装修不改写源区间、顺序、速度、主音频或字幕时序。\n2. **单一合成所有权**：同一帧的录屏几何、人物几何和外框只由一个稳定态或一个转场 owner 接管；白块、重复人物、孤儿框、叠加溶解都是所有权冲突。\n3. **时间原子性**：状态用半开区间 `[start,end)`；录屏、人物、框线同边界提交；媒体跨态先拆分，不按 item 起点猜状态。\n4. **证据优先**：画面变化由「隐私 → 屏幕证据 → 人物强调 → 字幕负载 → 新鲜感」决定；时间只提醒复查，不驱动机械轮播。\n5. **量化门禁**：工具成功不是完成。结构、字幕、音频、像素各有明确结果；无法看或听时标 `unverified`，不得用结构结果顶替试听或像素证据。\n\n## 通用工序\n\n1. **同步与规格**：多机位 `multicam_sync`；只留一个主音轨（讲解人 anchor，重复轨优先 mute/disable，宿主不支持才 -60dB 降级）；冻结画幅、fps、采样率。\n2. **A-roll 内容**：按官方 talking-head-guide，删减增量见 `references/operating-manual.md`；一句话原则——**删声音比删意思安全，错删信息的代价高于漏留口癖**。\n3. **剪后转写与字幕**：删除/重排/变速后必须刷新剪后转写；字幕见 `references/captions-terminology.md`——第一步永远是查字幕源绑定（挂在翻译变体轨上=P0，先切回原文源）。开工先扫素材目录找用户精校逐字稿：有则它是字幕文本唯一真相源，禁止在 ASR 错词上自行猜测修正（数字吞位/繁体/专名是 ASR 三大高发）。\n4. **样片闸门（渐进交付）**：横版先做开头约 18–23 秒、竖版 20–30 秒样片，确认后才批量；**长片（>5 分钟）升级为 60 秒预览闸——先把开头 60 秒做成全层完成态（剪辑+状态机+过渡+字幕+包装+隐私），请用户播放验收，通过后才向后推进**；批量中每完成一幕渲染抽查帧，不整片铺完才验。**验收单元 = 完整成片体验（画面+动画+字幕+隐私），字幕修正随幕完成，不设整片末尾统一校对环节。**任何一项失败先修样片，不批量复制错误。\n5. **画面结构**：双画面版式与七执行状态见 `references/dual-frame-layouts.md`；人脸取景见 `references/face-reframe.md`；批量切片与逐片精修先读 `references/operating-manual.md`。\n6. **动效与包装**：字幕锁定后才做过渡、B-roll、MG；过渡工程见 `references/motion-transitions.md`；配色见 `references/theme-palettes.md`。静态章节卡单调时，可由外部 MG 工具（如 hyperframes）产 MP4 后 `import_media` 替换；音效/BGM 走 ChatCut 素材库与生成工具，音量不夺 anchor。\n7. **验收**：结构回读 + 合成像素 + 实际试听三证齐才算完成；帧率以 ffprobe 读实际导出文件为准。请用户播放验收时按 `references/chatcut-field-notes.md` 双端预览路由：本地 ChatCut Mac 客户端优先 → 未装提示一次可下载（不强推）→ 浏览器兜底（明示网页端可能卡顿）；代理自己的像素证据始终 = 云端渲染帧。\n\n## 成片红线\n\n- 字幕：简体、始终单行、来自真实语音转写、按完整气口分卡；用户提供精校逐字稿时，精校稿是文本唯一真相源，禁止在 ASR 错词上自行猜测修正；行尾逗号不显示，句末标点保留；发布硬规则以 `rules/policy.json` 为准（profile 只能校准不能放宽），跑 `scripts/validate-caption-pages.mjs`，退出码非 0 = 未完成。\n- 内容：重说默认删前保后；重排只搬完整语义单位，不拼出说话人没说过的话；默认自然结束，不加模板片尾。\n- 画面：PiP 不拉伸；正圆以裁后可见区判定（`visibleWidth = width × (1−cropLeft−cropRight)`），改外框时保留旧 crop = 二次裁切事故；人物层保留完整源画幅，效果顺序 reframe → mask；任一精确帧露黑边即撤销整段动态取景；框线不穿人物；二维码等隐私信息全时间范围不可见，部分遮挡=失败。\n- 工程：30fps 时间线可能 60fps 导出，MG 一律按秒或归一化帧率计时；写入宣称成功≠落盘（回读 FX 实例）；素材池有资产≠时间线有实例。\n- 协作：用户已验收的设计是受保护基线，删除、降级、明显改变必须先问——连续兜底失败也不例外；同一可见缺陷第二次出现=停止逐片补丁，修共享根因并全量回归。\n\n## 确认闸门\n\n- **状态表先行（硬闸）**：画面结构批量落库前，必须先产出全片状态表（stateId｜[start,end)｜三层参数｜进出过渡｜隐私｜语义理由）并请用户过目；无状态表禁止批量 `edit_item`。上下文压缩后不凭摘要续做画面结构——先回读状态表与命中分册再动手。\n- 高风险删除：批量前确认代表性切点。字幕：样片窗口确认后扩展。视觉方向/配色/包装风格：先出 2–4 个可选方案让用户点选，不给单方案硬推，不代替用户拍板审美。\n- 导出：用户开口才导出；短导出授权按本轮措辞记录范围，不外扩、不跨任务。\n- 自动修复最多连续三轮，每轮要有新证据；仍失败就停，保留最近可用版本，产出带证据帧的交接文档可请外部 AI 复核。\n\n## 按需加载路由表\n\n| 任务信号 | 完整读取 |\n| --- | --- |\n| 批量切片、逐片精修、验收门禁、八道硬闸、A-roll 删减细则、多代理调度、生成资产纪律 | [逐片执行手册](references/operating-manual.md) |\n| 双画面构图、版式选型、七执行状态、状态原子契约、圆窗/分栏/上下屏、小窗腾挪 | [双画面版式系统](references/dual-frame-layouts.md) |\n| 主题配色、字幕底板、对比度、按角色用色、图表色板 | [主题配色系统](references/theme-palettes.md) + 选定主题的 `assets/theme-kit/playbooks/<id>.md` |\n| MG/设计图形加不加、加哪种、画面任务路由 | [信息块类型与选用](references/graphics-blocks.md) |\n| 过渡动画、状态切换、闪烁/黑块排查、fps 归一化 | [过渡动效工程](references/motion-transitions.md) |\n| 人脸居中、内部取景漂移、蒙版参数、黑边排查 | [人脸取景与三层合成](references/face-reframe.md) |\n| 字幕气口、术语纠错、词表维护、字幕门禁 | [字幕与词表](references/captions-terminology.md) |\n| 信息流切片开头钩子、完播、中段节奏、结尾、四平台路由 | [留存结构剪辑](references/retention-structure.md) |\n| ChatCut 宿主实测坑：crop 语义、两步提交、编辑器/云端渲染差异、MG 媒体槽失效、窗口 reframe shader、字幕分页引擎、音频层基线、隐私扫描 SOP、双端预览路由 | [ChatCut 宿主实测行为档案](references/chatcut-field-notes.md) |\n| 连接报错、OAuth 失效、打开既有项目、转写挂死、上下文压缩恢复 | [故障恢复手册](references/recovery.md) |\n\n可复用资产：`assets/compositions.json`（8 版式坐标快照）、`assets/theme-kit/`（8 主题 token+SVG 底图+可运行组件）、`templates/`（词表/实测参数/宿主兼容契约模板 + 本地个人层模板，装进你自己的数字）、`rules/policy.json`（不可由 profile 放宽的字幕发布策略）、`schemas/`（profile/字幕/词表/兼容契约结构）、`scripts/validate-caption-pages.mjs`（字幕机械校验，`npm test` 跑回归）。\n\n## 让它变成你自己的（本地个人层契约）\n\n本包的数字（22 字/行、330px 圆窗、`magnification≈0.30`）是作者素材上的实测起点，不是跨素材真理。个人化的正式机制是**本地个人层** `~/.config/majia-chatcut-koubo/`：\n\n1. **探测与叠加**：每次开工先探测该目录；存在则把其中内容叠加在本包通用规则之上——`profile/*.json`（个人版式与字幕实测数字，覆盖 `assets/compositions.json` 与模板同名键）、`terminology.json`（个人词表，validator 用 `--terms` 指向它）、`aesthetics.md`（个人审美基线，审美分歧时先读）、`local-notes.md`（个人补充护栏）。目录不存在就只用包内通用值，不报错。\n2. **起模**：把 `templates/local-config-example/` 整体复制为 `~/.config/majia-chatcut-koubo/`，在你的素材上做样片，把验证过的数字、品牌词表和审美偏好填进去。\n3. **边界**：品牌实词、真实业务数字、个人路径只进本地层，永不进 git、永不进公开仓；本地 profile 只能校准参数，不能放宽 `rules/policy.json` 的发布硬规则。数字变了就升版本存新文件，不覆盖旧版。\n\n版本记录见 [CHANGELOG.md](CHANGELOG.md)。\n\n## 👤 作者 / 联系\n\n**马甲（@maojiebc）** · 超级马甲\n\n如果这份 skill 帮到你，欢迎在以下任意渠道找我交流踩坑实录、提需求、报 bug，也欢迎勾兑用户运营 / 数据中台 / BI 工程的实战经验：\n\n| 渠道 | 链接 |\n|---|---|\n| 📧 Email | [m9224@163.com](mailto:m9224@163.com) |\n| 🐙 GitHub | [github.com/maojiebc](https://github.com/maojiebc) |\n| 🪝 ClawHub | [clawhub.ai/p/maojiebc](https://clawhub.ai/p/maojiebc) |\n| 🐦 X | [@maojiebc](https://x.com/maojiebc) |\n| 📕 小红书 | [超级马甲](https://xhslink.com/m/4fQMJeHHWKC) |\n| 📰 微信公众号 | [超级马甲](https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzY5NzIzODk2NA==#wechat_redirect) |\n\n> 这份 skill 是 14 年用户运营 + 数据中台 + BI 工程实战沉淀出来的，问题/合作随时聊。\n\nFile v1.3.0:assets/theme-kit/README.md\n\n# 9:16 口播视频配色与底图系统\n\n这是一套面向 1080 × 1920 竖屏口播内容的设计资产包。8 套配色均已拆成原始色板、语义色、SVG/PNG 底图、布局坐标和可运行的 HTML/CSS/JS 组件。\n\n## 先看什么\n\n1. 直接打开 `index.html`：查看 8 套主题总览。\n2. 打开 `examples/single.html`：切换主题、布局、文案和安全区。\n3. Codex 开始改代码前先读取根目录 `AGENTS.md`。\n4. 颜色以 `tokens/themes.json` 为唯一数据源，布局以 `tokens/layouts.json` 为唯一数据源。\n\n## 快速接入\n\n```html\n<link rel=\"stylesheet\" href=\"tokens/themes.css\">\n<link rel=\"stylesheet\" href=\"components/portrait-talk-card.css\">\n<div id=\"card\"></div>\n<script src=\"components/portrait-talk-card.js\"></script>\n<script>\n  PortraitTalkThemeKit.mount(\"#card\", {\n    theme: \"sea-salt-cyan\",\n    layout: \"fresh-frame\",\n    showSubtitle: true,\n    copy: {\n      title: \"会员不是折扣人群，\\n而是经营资产\",\n      emphasis: \"经营资产\",\n      footer: \"先理解用户，再设计权益\"\n    }\n  });\n</script>\n```\n\n组件画布固定为 1080 × 1920。预览时可以使用 CSS `transform: scale(...)` 缩放，导出时按原尺寸截图或录制。\n\n## 替换口播人物\n\n组件内 `.talk-card__speaker` 是人物安全区。透明背景视频建议加 `is-cutout`：\n\n```html\n<div class=\"talk-card__speaker is-cutout\">\n  <video class=\"talk-card__speaker-media\" src=\"speaker.webm\" autoplay muted loop playsinline></video>\n</div>\n```\n\n普通矩形视频去掉 `is-cutout`，组件会按主题自动加底色、边框和圆角。\n\n## 文件结构\n\n- `AGENTS.md`：给 Codex 的项目级约束。\n- `tokens/themes.json`：8 套主题、原始色板和语义色。\n- `tokens/layouts.json`：8 个布局的 1080 × 1920 坐标。\n- `tokens/themes.css` / `tokens/themes.ts`：前端可直接使用的变量与类型。\n- `assets/backgrounds/*.svg`：可编辑矢量底图。\n- `assets/backgrounds-png/*.png`：视频剪辑软件可直接使用的 1080 × 1920 纯底图。\n- `assets/demo-posters/*.png`：带示例信息层级和人物占位的成品预览。\n- `assets/overlays/safe-area.svg`：字幕和底部 UI 保护区参考。\n- `components/portrait-talk-card.*`：无依赖 HTML 组件。\n- `examples/PortraitTalkCard.tsx`：React 示例。\n- `scripts/check-contrast.mjs`：检查关键文字与按钮对比度。\n\n## 主题选择\n\n| 主题 | 适合内容 | 默认布局 |\n|---|---|---|\n| 深空蓝 | 数据、技术、AI、方法论 | 斜切科技 |\n| 墨绿金 | 业务复盘、经营、策略 | 商务分栏 |\n| 暖灰橙 | 干货、培训、日常表达 | 居中编辑 |\n| 午夜紫 | 趋势、创新、产品发布 | 轨道聚焦 |\n| 极简黑白 | 知识卡片、观点、问答 | 极简长栏 |\n| 海盐青 | 用户运营、会员增长、服务 | 清新框景 |\n| 大地棕 | 商业思考、案例、品牌故事 | 大地带状 |\n| 活力青柠 | 活动、会员日、上新传播 | 轻快角落 |\n\n## 校验\n\n```bash\nnode scripts/check-contrast.mjs\npython3 -m http.server 8000\n```\n\n然后访问本地的 `index.html` 和 `examples/single.html`。\n\nFile v1.3.0:README.md\n\n# ChatCut口播 · 马甲实战版\n\n![Skill Version](https://img.shields.io/badge/skill-v1.3.0-blue)\n[![skills.sh](https://skills.sh/b/maojiebc/majia-chatcut-koubo)](https://skills.sh/maojiebc/majia-chatcut-koubo)\n\n> 安装标识（slug）仍为 `majia-chatcut-koubo`，安装命令与下方一致；「ChatCut口播 · 马甲实战版」是它的中文展示名。\n\n**ChatCut 口播剪辑通用技巧包 · 马甲实战版** —— 官方 ChatCut skill 之上的增量层:双画面版式、主题配色、过渡动效、人脸取景四大件,外加可自维护的词表模板与机器化字幕门禁。全部规则来自真实批量剪片(11 支直播切片 × 多轮返工)踩出来的实测结论,不是理论汇编。\n\n<img src=\"https://raw.githubusercontent.com/maojiebc/majia-chatcut-koubo/main/docs/architecture.png\" alt=\"v1.3.0 增量层框架图:官方 ChatCut 底座 → 双画面版式(七执行状态) / 主题配色 / 过渡动效工程(窗口 reframe shader) / 人脸取景 四大件 + ChatCut 宿主实测档案 + 八道硬闸 + 本地个人层 → 词表模板 + 字幕门禁 → 可见画面 / 可听声音 / 可读字幕 验收三象\" width=\"100%\">\n\n<img src=\"https://raw.githubusercontent.com/maojiebc/majia-chatcut-koubo/main/docs/theme-preview.png\" alt=\"v1.3.0 · 8 套口播主题配色总览(每套含代理 playbook):深空蓝/墨绿金/暖灰橙/午夜紫/极简黑白/海盐青/大地棕/活力青柠\" width=\"100%\">\n\n## 这个包解决什么\n\n用 AI 代理(Codex / WorkBuddy / TRAE 等 ChatCut 宿主)剪口播视频时,官方 skill 教了「工具怎么用」,但没人告诉代理「剪成什么样算好」。结果是:画中画被裁成叶片形、过渡生硬得像 PPT、字幕两行挤压、导出后动画凭空消失 0.2 秒、黑边反复修不掉。\n\n本包把这些坑的**根因和数学**写成代理可执行的规范:\n\n- **双画面版式系统** — 横竖版 8 套具名版式带精确坐标(`assets/compositions.json`),七执行状态语义决策器 + 状态落地原子契约:什么时候人物全屏、什么时候圆窗、什么时候纯录屏,由证据决定不由时间轮播\n- **主题配色系统** — 8 套实测主题(token + SVG 底图 + 可运行 HTML 组件),**每套自带代理 playbook**:token 语义档位、信息块偏好、字幕底板硬规则、可直接嵌进生成指令的调用 crib\n- **过渡动效工程** — 端点契约、`N-1` 归一化公式、分层缓动、四档可靠性链(含 ChatCut 宿主快速路由)、fps 归一化(30fps 时间线 60fps 导出的经典坑)\n- **人脸取景与三层合成** — reframe→mask 硬顺序、GL UV 坐标陷阱(Y 轴底部原点/radius 实为直径)、overscan 黑边数学、「居中≠贴脸」构图标准\n- **字幕与词表** — 气口分卡判例、单行机器门禁(validator + 不可放宽的 `rules/policy.json`)、译文轨 P0 陷阱、精校逐字稿真相源、可自维护词表模板\n- **逐片执行手册 + 八道硬闸** — 一片一闭环、批量流水线、验证方法学、历史事故的回归闸门;60 秒预览闸与状态表先行确认闸\n- **ChatCut 宿主实测行为档案** — crop 语义、编辑器/云端渲染差异、MG 媒体槽失效与窗口 reframe shader 正解、字幕分页引擎机器路径、隐私扫描 SOP、双端预览路由\n- **留存结构 + 四平台路由** — 开头钩子决策流、钩子-兑现成对、注意力时钟、抖音/小红书/视频号/B站条件路由\n- **本地个人层** — `~/.config/majia-chatcut-koubo/` 叠加个人 profile/词表/审美基线;品牌词与实测数字留在本地,公开包保持通用\n\n## 安装\n\n```bash\n# GitHub CLI\ngh skill install maojiebc/majia-chatcut-koubo\n\n# 或 skills.sh\nnpx skills add maojiebc/majia-chatcut-koubo\n\n# 或 ClawHub\nnpx clawhub install majia-chatcut-koubo\n```\n\n## 让它变成你的(本地个人层)\n\n包里的数字(22 字/行、330px 圆窗、`magnification≈0.30`)是作者素材上的实测起点。正式机制:把 `templates/local-config-example/` 复制为 `~/.config/majia-chatcut-koubo/`,装进你的个人 profile(实测版式数字)、词表(validator `--terms` 直读)、审美基线与补充护栏——skill 开工探测该目录,存在即叠加。品牌实词与真实业务数字只进本地层,永不进 git;本地 profile 只能校准参数,不能放宽 `rules/policy.json` 的发布硬规则。数字变了就升版本存新文件,不覆盖旧版。\n\n## 结构\n\n```\nSKILL.md                        主入口:五条第一性原则+通用工序+红线+确认闸门+路由表\nreferences/\n  operating-manual.md           逐片闭环/八道硬闸/批量流水线/验证方法学/生成资产纪律\n  dual-frame-layouts.md         双画面版式/七执行状态决策器/状态原子契约\n  theme-palettes.md             8 主题+对比度档位+按角色用色+图表色板\n  graphics-blocks.md            十类信息块×何时用+画面任务路由(证据信号驱动)\n  motion-transitions.md         过渡工程:端点契约/四档链+ChatCut 快速路由/fps 归一化\n  face-reframe.md               三层合成/坐标系陷阱/overscan 数学/兼容探针\n  captions-terminology.md       气口分卡/单行门禁/精校稿真相源/词表机制\n  retention-structure.md        开头钩子决策流/钩子-兑现/注意力时钟/四平台路由\n  chatcut-field-notes.md        ChatCut 宿主实测行为档案(crop/渲染差异/shader/分页引擎/隐私 SOP/双端预览)\n  recovery.md                   502/403/工具面固化/续接手册协议/转写绕行\ntemplates/\n  terminology.template.json     词表模板(装你的品牌与误听)\n  operating-profile.template.json  实测参数模板(装你的数字)\n  compatibility.template.json   宿主能力探针契约(公式仅在探针通过后使用)\n  local-config-example/         本地个人层四件套模板(复制到 ~/.config/majia-chatcut-koubo/)\n  examples.md                   气口/钩子/删减判例库\nassets/\n  compositions.json             8 版式坐标快照(mustRemainVisible/mustBeRedacted 分离)\n  theme-kit/                    8 主题 token+SVG 底图+可运行组件\n  theme-kit/playbooks/          每主题一份代理 playbook(档位+版式+crib)\nrules/\n  policy.json                   不可由 profile 放宽的字幕发布策略(单行/毫秒短卡/繁体零容忍)\nschemas/                        profile/字幕/词表/兼容契约的 JSON Schema\nscripts/\n  validate-caption-pages.mjs    字幕页机械校验(profile 继承/结构化 JSON/--terms 个人词表;退出码非 0=未完成)\ntests/\n  caption-validator.test.mjs    validator 回归测试(npm test)\ndocs/\n  architecture.svg              增量层全景框架图(本页首图)\n  theme-preview.png             8 主题配色总览\n```\n\n## 📋 版本记录\n\n**V1.3.0(2026-07-24)** — 制度增量+ChatCut 实测档案+本地个人层:references 6→10 册(新增逐片执行手册/宿主实测行为档案/留存结构/故障恢复);SKILL 新增确认闸门(状态表先行硬闸/60 秒预览闸/精校稿真相源);机器门禁升级(不可放宽 `rules/policy.json`+schemas+validator 支持 profile 继承/毫秒短卡/`--terms` 个人词表+14 项回归测试);主题 token v1.1 对比度修正(海盐青正文 7.67:1 达标);本地个人层正式契约 `~/.config/majia-chatcut-koubo/` + `templates/local-config-example/` 四件套模板。\n\n**V1.2.3(2026-07-23)** — 依赖 CVE 修复:`assets/theme-kit/requirements.txt` 的 `CairoSVG>=2.7` 固定为 `==2.9.0`,消除 CVE-2026-31899(递归 `<use>` 指数级 DoS)暴露;SKILL description 补前置/非目标,收窄触发口径。\n\n**V1.2.2(2026-07-23)** — 中文品牌名:展示名定为「ChatCut口播 · 马甲实战版」,同步 SKILL/README/架构图/GitHub About/ClawHub;安装标识 `majia-chatcut-koubo`、frontmatter 与安装命令一律不变。\n\n完整变更历史见 [CHANGELOG.md](CHANGELOG.md)。\n\n## 方法来源\n\n规则主体来自作者的 ChatCut 实战复盘。部分方法论参考了以下开源项目(未复制代码实现):`Agentchengfeng/chengfeng-videocut-skills`(删前保后/风险分层)、`lcbuaaliu/ai-jian-koubo`(确定性预选+语义判断)、`WyattBlue/auto-editor`(反向审查将删内容)、`radix-ui/colors`、`material-foundation/material-color-utilities`、`adobe/leonardo`(语义色阶与对比度优先)、`d3/d3-scale-chromatic`(数据色板)、`pireel/pireel`(AGPL-3.0;仅吸收「主题=数据+代理 playbook」与逐主题调用 crib 的组织方法,未复制其任何主题内容、文本或代码)、`yoqu/lingji-cut`(Apache-2.0;仅吸收「进场/出场/循环强调」三轴动效枚举的组织方法,枚举取舍与全部文本为本包自定)。\n\n## 👤 作者 / 联系\n\n**马甲(@maojiebc)** · 超级马甲\n\n如果这份 skill 帮到你,欢迎在以下任意渠道找我交流踩坑实录、提需求、报 bug,也欢迎勾兑用户运营 / 数据中台 / BI 工程的实战经验:\n\n| 渠道 | 链接 |\n|---|---|\n| 📧 Email | [m9224@163.com](mailto:m9224@163.com) |\n| 🐙 GitHub | [github.com/maojiebc](https://github.com/maojiebc) |\n| 🪝 ClawHub | [clawhub.ai/p/maojiebc](https://clawhub.ai/p/maojiebc) |\n| 🐦 X | [@maojiebc](https://x.com/maojiebc) |\n| 📕 小红书 | [超级马甲](https://xhslink.com/m/4fQMJeHHWKC) |\n| 📰 微信公众号 | [超级马甲](https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzY5NzIzODk2NA==#wechat_redirect) |\n\n> 这份 skill 是 14 年用户运营 + 内容矩阵实战沉淀出来的,问题/合作随时聊。\n\nFile v1.3.0:templates/local-config-example/README.md\n\n# 本地个人层模板（local-config-example）\n\n把本目录整体复制为 `~/.config/majia-chatcut-koubo/`，装进你自己的数字与偏好。skill 开工时会探测该目录：**存在则叠加在本包的通用规则之上**；不存在就只用包内通用值。本地层**永不进 git**、永不进公开仓——品牌词、真实业务数字、个人实测坐标全部放这里。\n\n```\n~/.config/majia-chatcut-koubo/\n  profile/            个人 operating profile(实测版式/字幕/音频数字);同名键覆盖包内\n                      assets/compositions.json 与模板默认值;一版一文件,升版不覆盖旧版\n  terminology.json    个人词表(机器读):validator 用 --terms 指向它\n  terminology.md      个人词表(人读版,可选):维护心得、证据记录\n  aesthetics.md       个人审美基线:过渡手感、构图偏好、保护基线清单\n  local-notes.md      个人补充护栏:私有工作流衔接、平台账号惯例、个人路径\n```\n\n对应关系：\n\n| 本地文件 | 覆盖/叠加的公开资产 | 用法 |\n| --- | --- | --- |\n| `profile/*.json` | `templates/operating-profile.template.json` 起模；同名键覆盖 `assets/compositions.json` 坐标 | 剪辑开工先读；`validate-caption-pages.mjs --profile` 指向它 |\n| `terminology.json` | `templates/terminology.template.json` 起模 | `validate-caption-pages.mjs --terms` 指向它 |\n| `aesthetics.md` | `SKILL.md` 红线之上的个人裁决面 | 审美分歧时代理先读它再问你 |\n| `local-notes.md` | 无（纯个人层） | 写不适合进公开包的一切个人惯例 |\n\n例子文件都带注释，替换成你的内容即可。\n\nFile v1.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn71njkqkab6a75db7hqb6ekz982jd29\",\n  \"slug\": \"majia-chatcut-koubo\",\n  \"version\": \"1.3.0\",\n  \"publishedAt\": 1784830008337\n}\n\nFile v1.3.0:references/captions-terminology.md\n\n# 字幕与词表\n\n中文口播字幕的气口分卡、单行门禁、术语纠错与可自维护词表机制。\n\n## 四层模型（先修上游再修下游）\n\n1. **原始转写**：语音文字与词级时间戳，时序基础。\n2. **字幕源/语言变体**：字幕项显示哪个变体。\n3. **分页与气口**：什么时间显示哪张单行卡。\n4. **显示样式/局部覆盖**：字体、位置与极少量 display override。\n\n上游错误没解决时不在显示层堆补丁——显示层补丁堆积（几十上百个 override）是字幕反复返工的标志。\n\n## 第一步永远查源绑定（P0 陷阱）\n\n中文原音的字幕挂在 `translation:zh-Hans`/`zh-CN` **译文变体轨**上是高频事故：症状 = 凭空增词、整段漏句、错词、后半段突然变英文。任何字幕任务第一步回读字幕源绑定；发现译文轨立即切回原文源、基于**最终剪后 A-roll** 重转写重分页，禁止在译文结果上继续修。\n\n同理：删除/重排/变速后旧时间戳全部失效，必须刷新剪后转写，不能沿用剪前时间轴。剪后重建按序：①锁定 A-roll 内容与速度 → ②刷新/重生成当前时间线转写 → ③比较媒体真实时长与转写首尾，补查 ASR 未覆盖的开头结尾 → ④先只校正文字，再单独做气口、标点和分页 → ⑤生成可见字幕后再次回读全文和时间范围。宿主无法对剪后时间线刷新转写时，不能假装旧字幕仍然准确——至少逐段重新对齐受影响区间并列为未完全验证。\n\n## 精校逐字稿是文本唯一真相源\n\n开工先扫素材目录找用户的人工精校逐字稿（项目文件夹常见 `*逐字稿*.txt`）：有则它是字幕文本的唯一真相源，字幕校对以它对照 ASR 词表逐词修正，**禁止在 ASR 错词上自行猜测修正**。ASR 三大高发：**数字吞位**（「500 家」→「50 家」）、**繁体混入**、**专名错写**（品牌名/产品名/人名类）。精校稿与音频不一致时以音频实际说出的内容为准；拿不准的专名列待确认，不凭常识硬猜。\n\n## ASR 准备与缓存\n\n- 转写前先盘点语言、说话人数、专业术语和可能出现的数字；工具支持热词/提示词/说话人分离时按当前素材启用——热词只提供候选拼写，不覆盖实际发音和上下文判断。\n- 说话人标签帮助多 Take/访谈选择，不得把不确定身份写成真实姓名；笑声、叹气、掌声等事件保留为剪辑信号，字幕是否显示另行判断。\n- 转写按源素材缓存；源文件未变化时复用。内容删除、重排或变速后需要的是**剪后时间线转写**，不是无条件重转每个源文件。\n\n## 词表机制（把 `templates/terminology.template.json` 变成你的）\n\nASR 对品牌、专名、数字的误听是系统性的，逐次手修永远修不完。机制：\n\n1. **维护一份词表**：`正确写法 → [常见误听...]`。开工先通读脚本/转写建立本片术语面。\n2. 源层修复用 `manage_transcript` fix（格式 `FIX [段号]: 词索引 -> \"正确词\"`，段号纯数字；不确定词索引先用 `preview` 探针试探；空串可删词）。一次只修有证据的词。\n3. **上下文优先于发音**：说话人口音导致的误听（如「500 家店」被听成「50 家店」），结合上下文判断该写什么，不盲从 ASR。\n4. 疑似语义错字（如「盈利/亏损」方向性词）必须试听确认后改，不凭常识盲改。\n5. 每次剪辑发现新误听就回写词表——词表是唯一维护点，别散落在对话里。\n\n## 气口分卡\n\n「一个可独立理解的气口 = 一张单行字幕卡」。优先在这些位置切卡：明显吸气或停顿、语调落下、主谓宾完整、转折/因果/列举的自然边界。避免：按固定字数机械切割、拆开定语与中心词、把上句结尾和下句开头拼一张卡、2–5 字连续闪卡。\n\n- 经验范围：一张卡约 8–24 个汉字、0.8–3 秒（1.2–1.3x 变速下尤其避免长字串停留过短）。\n- 标点：卡内自然停顿保留逗号；卡片正好在逗号处切换时删除行尾逗号（切卡本身已表达停顿）；句末句号/问号/感叹号保留。\n- 分页原语：`forcePageBreak` 开新卡、`keepWithPrevious` 并卡、`hidden` 藏口头词。**keepWithPrevious 禁止跨剪辑点长链连打**（会把两个气口粘成超长单行）；同一处连修 3 轮仍被引擎拆开\n\nArchive v1.2.3: 59 files, 100845 bytes\n\nFiles: assets/compositions.json (7045b), assets/theme-kit/AGENTS.md (1429b), assets/theme-kit/assets/backgrounds/01-deep-space-blue.svg (1779b), assets/theme-kit/assets/backgrounds/02-emerald-gold.svg (1625b), assets/theme-kit/assets/backgrounds/03-warm-gray-orange.svg (1721b), assets/theme-kit/assets/backgrounds/04-midnight-purple.svg (1626b), assets/theme-kit/assets/backgrounds/05-minimal-black-white.svg (1257b), assets/theme-kit/assets/backgrounds/06-sea-salt-cyan.svg (1573b), assets/theme-kit/assets/backgrounds/07-earth-brown.svg (1379b), assets/theme-kit/assets/backgrounds/08-vitality-lime.svg (1664b), assets/theme-kit/assets/overlays/safe-area.svg (747b), assets/theme-kit/assets/overlays/speaker-placeholder.svg (341b), assets/theme-kit/components/portrait-talk-card.css (12009b), assets/theme-kit/components/portrait-talk-card.html (529b), assets/theme-kit/components/portrait-talk-card.js (6771b), assets/theme-kit/docs/codex-prompt.md (1278b), assets/theme-kit/docs/layout-spec.md (1436b), assets/theme-kit/docs/theme-guide.md (1647b), assets/theme-kit/examples/demo-data.json (435b), assets/theme-kit/examples/PortraitTalkCard.tsx (1358b), assets/theme-kit/examples/single.html (4578b), assets/theme-kit/index.html (4361b), assets/theme-kit/manifest.json (2232b), assets/theme-kit/package.json (278b), assets/theme-kit/playbooks/01-deep-space-blue.md (2496b), assets/theme-kit/playbooks/02-emerald-gold.md (2...","readmeExcerpt":"Skill: ChatCut口播 · 马甲实战版 Owner: maojiebc Summary: 编排 ChatCut 官方能力，稳妥完成口播样片、整片扩展与验证 Tags: agent-skills:1.7.0, ai-agent:1.7.0, captions:1.7.0, chatcut:1.7.0, claude-code:1.7.0, codex:1.7.0, latest:1.7.0, talking-head:1.7.0, video-editing:1.7.0 Version history: v1.7.0 | 2026-09-30T10:02:05.062Z | user 新增网页与桌面环境检查、字幕/转写/剪切/原声替换分流，避免只改字幕却重剪；原声替换单独审批，官方更新可追溯。离线检查通过，真实 ChatCut 写入、画面与人耳试听仍为 UNVERIFIED。 v1.6.0 | 2026-08-11T02","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"preflight\n→ brief_ready\n→ project_ready\n→ transcript_ready\n→ edit_plan_ready\n→ sample_ready\n→ sample_approved\n→ full_aroll_applied\n→ captions_audio_ready\n→ enhancements_ready（仅获批）\n→ verified\n→ review_ready\n→ exported（仅获批）"},{"language":"text","snippet":"转写与术语保护\n→ A-roll 决定\n→ 代表样片与批准\n→ 整片 A-roll\n→ 单一对白主轨与声音衔接\n→ 整片字幕\n→ 可选增强\n→ 验证"},{"language":"bash","snippet":"npm run run -- --intent \"用马甲稳剪当前口播\" --dry-run --json\nnpm run status -- --run-id <run-id>\nnpm run review -- --run-id <run-id>\nnpm run approve-decisions -- --run-id <run-id> --decision-id <decision-id>\nnpm run approve-sample -- --run-id <run-id>\nnpm run request-revision -- --run-id <run-id> --direction natural\nnpm run resume -- --run-id <run-id> --timeline-revision <fresh-revision> \\\n  --reconcile-outcome <blocker-specific-outcome> \\\n  --evidence-ref <logical:readback-evidence> [--checkpoint-id <checkpoint-id>]\nnpm run report -- --run-id <run-id>"},{"language":"text","snippet":"真实任务出现问题\n  ↓\n写入 03-实操迭代与踩坑\n  ↓\n在不同任务中重复验证\n  ↓\n晋升到 02-剪辑方法手册\n  ↓\n可以机器判定时，再进入 rules + fixtures + tests\n  ↓\n积累到一批后统一发正式版本"},{"language":"bash","snippet":"npm run validate:runtime-contracts\nnpm run test:orchestration\nnpm run test:risk-policy\nnpm run test:run-state\nnpm run test:starter-prompts\nnpm run smoke:one-click:fake\nnpm run validate:docs-routing\nnpm run verify"},{"language":"text","snippet":"03-实操迭代与踩坑/\n  README.md\n  迭代记录.md\n  案例/\n    YYYY-MM-DD-<案例名称>.md"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: majia-chatcut-koubo\ndescription: ChatCut 口播与录屏视频的一句话编排和安全默认层。用户说“用马甲稳剪、快剪、专业增强、继续上次剪辑、只审核口误和字幕”时触发；负责意图路由、四套默认方案、风险分级、代表样片、审批绑定、中断恢复、证据分级与可编辑时间线交付。项目操作与工具参数始终交给 ChatCut 官方 Skill。默认不重排观点，不添加音乐、动态图形、补充画面或生成素材，不导出、不发布。真实 ChatCut 端到端只有当前匿名样本和工具证据齐全时才能宣称通过。\nlicense: MIT\nmetadata:\n  version: 1.7.0\n---\n\n# ChatCut口播 · 马甲实战版\n\n你是官方 ChatCut 能力之上的轻量流程助手。让普通创作者用一句话进入安全、可恢复、可审阅的口播流程，不要先展示全部高级知识。\n\n## 功能架构\n\n从当前会话检查、代表样片到可继续编辑的时间线，按阶段回读并保存进度：\n\n![v1.7.0 口播流程](https://raw.githubusercontent.com/maojiebc/majia-chatcut-koubo/main/04-项目设计与路线图/系统架构.png)\n\n## 用户合同\n\n用户说“用马甲稳剪”时：\n\n1. 检查当前 ChatCut 会话、项目、时间线和素材。\n2. 只自动处理有证据的低风险口误、失败重说和批准范围内的长停顿。\n3. 先做代表样片；用户确认后才扩展整片。\n4. 先锁定 A-roll，再做声音平滑和基础字幕。\n5. 分开验证结构、画面、音频测量、人耳试听、隐私和用户确认。\n6. 默认交付可继续编辑的 ChatCut 时间线和自然语言报告。\n\n默认不重排观点，不删除整句/数字/专名/否定附近内容，不加音乐/动态图形/补充画面/生成素材，不覆盖手工修改，不导出，不发布用户视频。\n\n## 与官方 Skill 的边界\n\n工具怎么调用、参数叫什么、产品当前支持什么，一律以当前 ChatCut 官方 Skill 和工具说明为准。本 Skill 只补流程衔接、安全默认、风险与审批、恢复和交付报告。\n\n任何非机械小修，按任务加载：\n\n| 阶段或信号 | 官方 Skill |\n| --- | --- |\n| 项目定位与编辑器交接 | `chatcut-plugin-basics` |\n| 口播清理方法 | `talking-head-guide` |\n| 转写和字幕 | `transcription` |\n| 结构与合成画面验证 | `verification` |\n| 导入素材 / 多机位 | `asset-import` / `multicam-sync` |\n| 音乐 / 动态图形获批 | `music` / `create-motion-graphics` |\n| 特殊画面 / 生成视频 / 语音获批 | `shader-gen` / `video-gen` / `voice` |\n| 导出获批 / 已知故障 | `export` / `known-errors` |\n| 产品问题 / 一次性询问 | `product-help` / `widget-forms` |\n\n完整分工见 [官方能力分工](workflows/official-skill-map.md)。禁止长期复制官方参数或内部对象获取方法。\n\n## v1.7 环境与文字保护\n\n先确定当前项目是 Hosted/Web 还是 Desktop。Hosted 读取对应官方 Skills；Desktop 使用签名应用同步或托管助手的当前指令，不强制加载 Hosted 教程，也不静默换环境。工具缺失时按当前环境指引处理；本包不自行安装或重配另一环境。\n\n每次会话和工具定义变化后重新读取能力。可用 `npm run preflight -- --session <current-session.json> --json` 检查声明的来源、能力和时效；没有观察记录、缺能力、过期、环境不匹配或模拟记录不得作为写入准入。该命令只检查提供的合同，不证明已连接账号或已验证真实媒体。\n\n文字修改先确定对象：只改字幕走字幕卡/程序；原声正确但 ASR 听错只修源转写；删口播内容走 Script；实际说错才考虑原声替换。只改字幕和只修转写关闭默认口播清理与音频平滑，不顺带重剪。模糊或混合请求先澄清。\n\n局部原声替换始终高风险。确认精确文字与区域、说话人声音和克隆权限后才允许生成；保留原画面和后续时序，单独试听修复窗口。样片批准不能替代这项审批。\n\n字幕重分段会改变卡片身份。完成一个阶段后重新读取卡片、修订号和翻译覆盖，再进行下一批；旧卡片引用和旧样片证据不得复用。历史词级 override 与一帧 guard 保留为旧故障候选，不作为新版默认方法。\n\n完整流程见 [环境与文字修改](workflows/session-and-text-safety.md)。维护时先读 [官方来源快照](reports/official-source-current.json)，再用 `npm run check:official -- --checkout <official-checkout>` 比较已审查内容；源码快照不能覆盖当次工具 schema。\n\n## 识别意图\n\n- `run + stable`：马甲稳剪、一键稳剪、剪干净、处理口误停顿和字幕。\n- `run + fast`：快剪、短口播、尽快出样片。\n- `run + pro`：专业增强、录屏演示、双画面或明确高级处理。\n- `review`：只审核、先不要改、只看口误和字幕方案。\n- `resume`：继续上次、恢复、接着剪。\n\n无法确认时使用 `stable`，不要把模糊需求解释成更大授权。先自动读取当前项目、时间线和素材；只有无法唯一绑定时才问一个聚焦问题。若还缺多个创作字段，一次性询问最多五项：目标、节奏、目标时长/平台、字幕偏好、录屏/隐私/必须保留内容。不要让用户重复提供工具已经能读到的信息。\n\n可直接使用以下路线：\n\n- [一句话稳剪](workflows/one-click-stable.md)\n- [快剪](workflows/fast-cut.md)\n- [专业增强](workflows/pro-enhance.md)\n- [继续未完成剪辑](workflows/resume.md)\n\n## 选择默认方案\n\n| 条件 | 方案 | 默认特点 |\n| --- | --- | --- |\n| 普通口播 | `balanced-stable` | 原顺序、自然节奏、A-roll 单画面 |\n| 30–90 秒快剪 | `tight-short` | 更紧，但重排仍需确认 |\n| 5–30 分钟长片 | `trust-longform` | 保护案例、数字和论证链 |\n| 录屏 + 人物 | `screen-demo` | 屏幕证据优先，隐私必须验证 |\n\n机器合同在 [`profiles/`](profiles/)。个人偏好只能保持或收紧安全规则。除非用户明确说“学一"},{"path":"01-从这里开始/README.md","content":"# 从这里开始\n\n这个目录是给维护者看的，不要求先懂代码。\n\n## 我现在想做什么\n\n| 你的目的 | 去哪里 | 怎么维护 |\n| --- | --- | --- |\n| 记录一次真实剪辑里新踩的坑 | [实操迭代与踩坑](../03-实操迭代与踩坑/README.md) | 先追加案例，再在迭代记录里写这次采用了什么 |\n| 查字幕、转场、双画面、人脸取景怎么做 | [剪辑方法手册](../02-剪辑方法手册/README.md) | 找对应主题；只有跨案例验证过的经验才写进这里 |\n| 看项目为什么这样设计、下一步做什么 | [项目设计与路线图](../04-项目设计与路线图/README.md) | 维护路线图、架构、迁移说明和规则吸收记录 |\n| 修改主题颜色或版式坐标 | `assets/` | 这是半人工、半程序区，修改后必须运行全量验证 |\n| 修改机器必须遵守的硬规则 | `rules/` | 同时补 schema、正反 fixture 和测试，不直接手改一句就结束 |\n| 修改安装后 Agent 的总行为 | `SKILL.md` | 先读实操案例；修改后检查所有链接和版本面 |\n| 修改一句话入口或主流程 | `agents/`、`workflows/`、`src/orchestration/` | 同步入口路由、状态、风险、样片、恢复和交付测试 |\n| 修改稳剪/快剪/长片/录屏默认值 | `profiles/` | 默认只能保持或收紧安全边界，并更新匿名正反例 |\n| 修改跨会话状态和报告 | `schemas/runtime/`、`templates/runtime/` | 同步 Schema、模板、CLI、故障场景和兼容检查 |\n| 发布一批正式更新 | `CHANGELOG.md`、`package.json` | 经验积累不等于发版；达到一批后再统一升级版本 |\n\n## 四个中文维护区\n\n1. `01-从这里开始/`：人类入口和维护地图。\n2. `02-剪辑方法手册/`：已经相对稳定、下次可以直接复用的方法。\n3. `03-实操迭代与踩坑/`：真实案例、失败路径、ChatCut 产品问题和迭代回执。\n4. `04-项目设计与路线图/`：架构、路线图、迁移说明和规则吸收记录。\n\n## 英文目录是什么\n\n这些目录主要给程序、测试和安装工具使用。平时阅读仓库时可以先忽略：\n\n| 目录 | 用途 | 普通维护是否常改 |\n| --- | --- | --- |\n| `src/` | 核心程序实现 | 否 |\n| `scripts/` | 校验和命令行工具 | 否 |\n| `schemas/` | JSON 数据合同 | 否 |\n| `fixtures/` | 测试用匿名样例 | 否 |\n| `tests/` | 自动化回归测试 | 否 |\n| `templates/` | 给用户复制的模板 | 偶尔 |\n| `agents/` | 安装后的默认一句话入口 | 偶尔 |\n| `workflows/` | 稳剪、快剪、专业增强和恢复说明 | 偶尔 |\n| `profiles/` | 四套可复现剪辑默认方案 | 谨慎 |\n| `assets/` | 版式、主题和视觉资产 | 按需 |\n| `rules/` | 机器硬规则 | 谨慎 |\n\n## 最常用的维护流程\n\n```text\n真实任务出现问题\n  ↓\n写入 03-实操迭代与踩坑\n  ↓\n在不同任务中重复验证\n  ↓\n晋升到 02-剪辑方法手册\n  ↓\n可以机器判定时，再进入 rules + fixtures + tests\n  ↓\n积累到一批后统一发正式版本\n```\n\n原则只有一句：案例先积累，方法后晋升，硬规则最后机器化。\n\n## V1.7 主流程改动后的最小检查\n\n```bash\nnpm run validate:runtime-contracts\nnpm run test:orchestration\nnpm run test:risk-policy\nnpm run test:run-state\nnpm run test:starter-prompts\nnpm run smoke:one-click:fake\nnpm run validate:docs-routing\nnpm run verify\n```\n\n真实 ChatCut 验证结果单独写入 `reports/live-canary-v1.7.0.json`。匿名模拟通过不能把真实状态从 `UNVERIFIED` 改为通过。\n\n官方适配维护先读 [环境与文字修改](../workflows/session-and-text-safety.md) 和 [本轮来源与设计](../04-项目设计与路线图/2026-09-30官方更新与v1.7设计.md)，运行 `npm run test:compatibility` 与 `npm run check:official`。"},{"path":"02-剪辑方法手册/README.md","content":"# 剪辑方法手册\n\n这里保存已经经过复验、下一次任务可以直接读取的方法。真实事故和未决问题放在 [实操迭代与踩坑](../03-实操迭代与踩坑/README.md)，不要混写。\n\n## 按问题找手册\n\n| 遇到的问题 | 读取 |\n| --- | --- |\n| 不知道整片应该按什么顺序做 | [01-逐片执行手册](01-逐片执行手册.md) |\n| 人物、录屏、圆窗和分栏怎么排 | [02-双画面版式](02-双画面版式.md) |\n| 字幕底板、品牌色、图表色怎么选 | [03-主题配色](03-主题配色.md) |\n| 要不要加标题卡、步骤卡、关键词强调 | [04-信息块与画面任务](04-信息块与画面任务.md) |\n| 转场生硬、闪黑、节奏太快 | [05-过渡动效](05-过渡动效.md) |\n| 人脸不居中、圆窗拉伸、出现黑边 | [06-人脸取景与三层合成](06-人脸取景与三层合成.md) |\n| 字幕错词、断句、长字幕、词表 | [07-字幕与术语](07-字幕与术语.md) |\n| 开头不抓人、中段拖、平台节奏不同 | [08-留存结构与平台路由](08-留存结构与平台路由.md) |\n| ChatCut 编辑器、云端渲染、分页引擎有差异 | [09-ChatCut宿主实测](09-ChatCut宿主实测.md) |\n| 连接失败、转写卡住、任务接力恢复 | [10-故障恢复](10-故障恢复.md) |\n| 查 198 份剪辑百科，或调用外部 Remotion 镜头配方 | [11-外挂知识包与镜头配方](11-外挂知识包与镜头配方.md) |\n\n## 维护原则\n\n- 单次事故先写案例，不直接升级为通用方法。\n- 至少经过重复实例和 E2/E3 证据，再晋升到本目录。\n- 方法要写适用范围、反例和失败后的回滚动作。\n- 能机器判定的稳定方法，才进一步进入 `rules/`。"},{"path":"03-实操迭代与踩坑/README.md","content":"# 实战经验库\n\n这个目录保存真实 ChatCut 生产任务中出现的事实、失败链、产品问题、绕行方案和证据。它不是正式规则的堆放区，也不是只写成功经验的“战报”。\n\n目标是解决两个问题：\n\n1. 不用每出现一个新坑就发布新的 Skill 正式版本。\n2. 下一次迭代不能从零开始，必须读取旧案例，并留下“读过以后做了什么决定”的记录。\n\n## 目录契约\n\n```text\n03-实操迭代与踩坑/\n  README.md\n  迭代记录.md\n  案例/\n    YYYY-MM-DD-<案例名称>.md\n```\n\n- `案例/`：追加式原始案例。保留时间线、尝试、失败、修复、验证和未决问题。\n- `迭代记录.md`：每次 Skill 迭代或命中案例标签的生产任务的读取回执。\n- `02-剪辑方法手册/`：从多个案例中晋升出的稳定做法。\n- `rules/`：可机器执行、带反例和回滚条件的 hard policy。\n\n## 开工读取协议\n\n真实 ChatCut 任务或 Skill 迭代开始时：\n\n1. 读取本文件。\n2. 按 frontmatter 的 `tags`、`chatcut_surfaces`、`failure_signatures` 找到相关案例。\n3. 完整读取案例，不能只读执行摘要。\n4. 把读取结果写入 `迭代记录.md`：\n   - 读取了哪些案例；\n   - 哪些结论本次采用；\n   - 哪些结论因版本、证据或任务差异被拒绝；\n   - 新增了什么 canary；\n   - 哪些结论有资格晋升。\n\n## 收工写入协议\n\n任务结束时：\n\n1. 新事实优先追加到已有案例；不同根因或不同产品面才新建案例。\n2. 记录实际结果，不把计划写成结果。\n3. 区分证据等级：\n   - `E0`：推测或代理内部判断，没有用户/像素/回读证据。\n   - `E1`：结构回读、工具返回、DOM/日志。\n   - `E2`：用户在编辑器的可见观察，或本地源文件抽帧/试听。\n   - `E3`：ChatCut 合成帧、最终导出文件、可复算媒体指标。\n4. 记录 `expected / actual / impact / workaround / requested_fix`，让产品经理和开发可直接转为 issue。\n5. 记录证据缺口。没有保存编辑器截图时，要明确写“用户观察，未留像素附件”，不能冒充 E3。\n\n## 规则晋升\n\n一条案例结论进入 `02-剪辑方法手册/` 至少满足：\n\n- 两个独立案例，或同一问题在不同资产/实例上重复；\n- 有 E2/E3 证据；\n- 有适用范围和反例；\n- 有失败时的回滚动作；\n- 不与官方 ChatCut skill 和当前工具 schema 冲突。\n\n进入 `rules/` 还必须：\n\n- 可机器判定；\n- 有正/反 fixture；\n- 有稳定 rule ID；\n- 有 owner、回滚和版本漂移策略。\n\n## 修订与纠错\n\n- 案例原则上不覆盖旧结论。\n- 事实错误可原位修复，但必须在“修订记录”说明原因。\n- 产品版本变化使旧结论失效时，新增 `supersedes` 案例，并在旧案例顶部链接新案例。\n- 不删除仍有历史解释价值的失败路径。\n\n## 公开仓脱敏\n\n禁止提交：\n\n- ChatCut 项目 ID、资产 ID、签名 URL、短期导入 token；\n- 用户本机绝对路径；\n- 原始字幕全文、人物画面和私有截图；\n- 品牌私词表、真实业务敏感数字；\n- OAuth、API key、邮箱、手机号等标识。\n\n允许提交：\n\n- 匿名化帧数、时长、轨道角色和 source offset；\n- 错误字符串、工具行为、验证流程；\n- 脱敏标题和通用 ASR 错误模式；\n- 对 ChatCut 产品团队有复现价值的 expected/actual。\n\n## 第一个案例\n\n- [AI Hero 母片精修：编辑器黑底、云端帧正常与真实 Hyperframes 替换](案例/2026-07-24-AI-Hero母片精修.md)"},{"path":"04-项目设计与路线图/README.md","content":"# 项目设计与路线图\n\n这里解释项目为什么这样设计，以及后续准备往哪里走。\n\n| 内容 | 文件 |\n| --- | --- |\n| V1.6 一句话稳剪主流程、四套默认方案和安全护栏 | [系统架构](系统架构.svg) |\n| 8 套口播主题视觉总览 | [主题预览](主题预览.png) |\n| 当前合同和 fail-closed 基线 | [契约基线](https://github.com/maojiebc/majia-chatcut-koubo/blob/main/04-%E9%A1%B9%E7%9B%AE%E8%AE%BE%E8%AE%A1%E4%B8%8E%E8%B7%AF%E7%BA%BF%E5%9B%BE/%E5%A5%91%E7%BA%A6%E5%9F%BA%E7%BA%BF.md) |\n| 老配置如何迁移 | [V1.3.1迁移指南](https://github.com/maojiebc/majia-chatcut-koubo/blob/main/04-%E9%A1%B9%E7%9B%AE%E8%AE%BE%E8%AE%A1%E4%B8%8E%E8%B7%AF%E7%BA%BF%E5%9B%BE/V1.3.1%E8%BF%81%E7%A7%BB%E6%8C%87%E5%8D%97.md) |\n| 外部 AI 剪辑经验如何吸收或拒绝 | [AI剪辑规则吸收记录](https://github.com/maojiebc/majia-chatcut-koubo/blob/main/04-%E9%A1%B9%E7%9B%AE%E8%AE%BE%E8%AE%A1%E4%B8%8E%E8%B7%AF%E7%BA%BF%E5%9B%BE/AI%E5%89%AA%E8%BE%91%E8%A7%84%E5%88%99%E5%90%B8%E6%94%B6%E8%AE%B0%E5%BD%95.md) |\n| 已完成、下一步和研究项 | [公开路线图](公开路线图.md) |\n\n当前路线图把“一句话产品层离线已交付”和“真实 ChatCut 端到端仍为 `UNVERIFIED`”分开记录；不要用匿名模拟结果替代真实写入、合成画面或人耳试听证据。\n\n如果只是记录一次剪辑任务的新问题，请去 [实操迭代与踩坑](../03-实操迭代与踩坑/README.md)，不要写到路线图里。"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"编排 ChatCut 官方能力，稳妥完成口播样片、整片扩展与验证 Skill: ChatCut口播 · 马甲实战版 Owner: maojiebc Summary: 编排 ChatCut 官方能力，稳妥完成口播样片、整片扩展与验证 Tags: agent-skills:1.7.0, ai-agent:1.7.0, captions:1.7.0, chatcut:1.7.0, claude-code:1.7.0, codex:1.7.0, latest:1.7.0, talking-head:1.7.0, video-editing:1.7.0 Version history: v1.7.0 | 2026-09-30T10:02:05.062Z | user 新增网页与桌面环境检查、字幕/转写/剪切/原声替换分流，避免只改字幕却重剪；原声替换单独审批，官方更新可追溯。离线检查通过，真实 ChatCut 写入、画面与人耳试听仍为 UNVERIFIED。 v1.6.0 | 2026-08-11T02","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":648,"uniquenessScore":66,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T04:38:50.200Z","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-11T04:38:50.200Z","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-11T07:43:54.744Z","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"}]}}}