{"id":"b4ac2d49-8d0f-42e6-8683-a11236e5df67","entityType":"agent","slug":"clawhub-dlazyai-dlazy-course-avatar","name":"知识付费讲师数字人 Course Avatar","canonicalUrl":"https://www.xpersona.co/agent/clawhub-dlazyai-dlazy-course-avatar","canonicalPath":"/agent/clawhub-dlazyai-dlazy-course-avatar","generatedAt":"2026-10-11T11:26:13.004Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T09:22:38.413Z","emptyReason":null},"description":"Knowledge-course / online-teaching avatar lecturer — 16 landscape base-portrait recipes plus the slide-first pipeline that keeps a 20-minute lesson under 3000 credits. Use when the user wants a digital human to teach a paid course, a training module or a knowledge-sharing video on platforms like Xiaoetong, Tencent Classroom, Bilibili, YouTube or an internal LMS. Skill: 知识付费讲师数字人 Course Avatar Owner: dlazyai Summary: Knowledge-course / online-teaching avatar lecturer — 16 landscape base-portrait recipes plus the slide-first pipeline that keeps a 20-minute lesson under 3000 credits. Use when the user wants a digital human to teach a paid course, a training module or a knowledge-sharing video on platforms like Xiaoetong, Tencent Classroom, Bilibili, YouTube or an internal LMS.","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s170j1ymymrxasgd00dsk7tckx84cf45:dlazy-course-avatar","sourceUrl":"https://clawhub.ai/dlazyai/dlazy-course-avatar","homepage":"https://clawhub.ai/dlazyai/skills/dlazy-course-avatar","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/dlazyai/dlazy-course-avatar","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/dlazyai/skills/dlazy-course-avatar","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Knowledge-course / online-teaching avatar lecturer — 16 landscape base-portrait recipes plus the slide-first pipeline that keeps a 20-minute lesson under 3000 c"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T09:22:38.413Z","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-11T09:22:38.413Z","emptyReason":null},"stars":null,"forks":null,"downloads":1101,"packageName":null,"latestVersion":"1.0.18","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T09:22:38.398Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T09:22:38.413Z","lastCrawledAt":"2026-10-11T09:22:38.398Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T09:22:38.398Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.18","createdAt":"2026-10-10T01:02:40.332Z","changelog":"例行版本更新 2026-10-10","fileCount":6,"zipByteSize":33784},{"version":"1.0.17","createdAt":"2026-10-08T01:02:53.755Z","changelog":"例行版本更新 2026-10-08","fileCount":6,"zipByteSize":33767},{"version":"1.0.16","createdAt":"2026-10-04T01:03:26.499Z","changelog":"例行版本更新 2026-10-04","fileCount":6,"zipByteSize":33612},{"version":"1.0.15","createdAt":"2026-10-02T04:48:08.734Z","changelog":"例行版本更新 2026-10-02","fileCount":6,"zipByteSize":33837},{"version":"1.0.14","createdAt":"2026-09-30T01:02:48.513Z","changelog":"例行版本更新 2026-09-30","fileCount":6,"zipByteSize":33697},{"version":"1.0.13","createdAt":"2026-09-28T02:02:45.636Z","changelog":"例行版本更新 2026-09-28","fileCount":6,"zipByteSize":33696},{"version":"1.0.12","createdAt":"2026-09-28T01:03:16.243Z","changelog":"例行版本更新 2026-09-28","fileCount":6,"zipByteSize":33743},{"version":"1.0.11","createdAt":"2026-09-24T06:47:04.453Z","changelog":"例行版本更新 2026-09-24","fileCount":6,"zipByteSize":34036}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170j1ymymrxasgd00dsk7tckx84cf45:dlazy-course-avatar","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-dlazyai-dlazy-course-avatar/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-dlazy-course-avatar/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-dlazy-course-avatar/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-dlazy-course-avatar/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-dlazy-course-avatar/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-dlazy-course-avatar/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-11T11:26:13.002Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-dlazy-course-avatar/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-dlazy-course-avatar/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-dlazy-course-avatar/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-dlazy-course-avatar/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-11T09:22:38.413Z","emptyReason":null},"readme":"Skill: 知识付费讲师数字人 Course Avatar\n\nOwner: dlazyai\n\nSummary: Knowledge-course / online-teaching avatar lecturer — 16 landscape base-portrait recipes plus the slide-first pipeline that keeps a 20-minute lesson under 3000 credits. Use when the user wants a digital human to teach a paid course, a training module or a knowledge-sharing video on platforms like Xiaoetong, Tencent Classroom, Bilibili, YouTube or an internal LMS.\n\nTags: latest:1.0.18\n\nVersion history:\n\nv1.0.18 | 2026-10-10T01:02:40.332Z | user\n\n例行版本更新 2026-10-10\n\nv1.0.17 | 2026-10-08T01:02:53.755Z | user\n\n例行版本更新 2026-10-08\n\nv1.0.16 | 2026-10-04T01:03:26.499Z | user\n\n例行版本更新 2026-10-04\n\nv1.0.15 | 2026-10-02T04:48:08.734Z | user\n\n例行版本更新 2026-10-02\n\nv1.0.14 | 2026-09-30T01:02:48.513Z | user\n\n例行版本更新 2026-09-30\n\nv1.0.13 | 2026-09-28T02:02:45.636Z | user\n\n例行版本更新 2026-09-28\n\nv1.0.12 | 2026-09-28T01:03:16.243Z | user\n\n例行版本更新 2026-09-28\n\nv1.0.11 | 2026-09-24T06:47:04.453Z | user\n\n例行版本更新 2026-09-24\n\nv1.0.10 | 2026-09-24T01:05:15.665Z | user\n\n例行版本更新 2026-09-24\n\nv1.0.9 | 2026-09-22T01:02:10.491Z | user\n\n例行版本更新 2026-09-22\n\nv1.0.8 | 2026-09-20T01:04:34.710Z | user\n\n例行版本更新 2026-09-20\n\nv1.0.7 | 2026-09-14T01:03:27.353Z | user\n\n例行版本更新 2026-09-14\n\nv1.0.6 | 2026-09-10T01:02:37.346Z | user\n\n例行版本更新 2026-09-10\n\nv1.0.5 | 2026-09-08T01:02:39.813Z | user\n\n例行版本更新 2026-09-08\n\nv1.0.4 | 2026-09-07T01:04:34.895Z | user\n\n例行版本更新 2026-09-07\n\nv1.0.3 | 2026-09-04T01:08:15.821Z | user\n\n例行版本更新 2026-09-04\n\nv1.0.2 | 2026-09-02T01:02:55.102Z | user\n\n例行版本更新 2026-09-02\n\nv1.0.1 | 2026-08-31T02:44:35.436Z | user\n\n源码仓库迁移至 github.com/dlazy-ai/cli\n\nv1.0.0 | 2026-08-28T01:46:32.259Z | user\n\n首发：16 条横屏讲师/课件配方 + 露脸预算方案（20 分钟课 27840→2640 积分）\n\nArchive index:\n\nArchive v1.0.18: 6 files, 33784 bytes\n\nFiles: pipeline.md (16592b), recipes.md (31651b), skill-card.md (2293b), SKILL.md (11164b), troubleshooting.md (11508b), _meta.json (139b)\n\nFile v1.0.18:SKILL.md\n\n---\nname: dlazy-course-avatar\nversion: 1.0.0\ndescription: Knowledge-course / online-teaching avatar lecturer — 16 landscape base-portrait recipes plus the slide-first pipeline that keeps a 20-minute lesson under 3000 credits. Use when the user wants a digital human to teach a paid course, a training module or a knowledge-sharing video on platforms like Xiaoetong, Tencent Classroom, Bilibili, YouTube or an internal LMS.\nmetadata: {\"clawdbot\":{\"emoji\":\"🎓\",\"requires\":{\"bins\":[\"npm\",\"npx\"],\"env.optional\":[\"DLAZY_API_KEY\"]},\"install\":\"npm install -g @dlazy/cli@1.2.3\",\"installAlternative\":\"npx @dlazy/cli@1.2.3\",\"homepage\":\"https://dlazy.com\",\"configLocation\":\"~/.dlazy/config.json\",\"apiEndpoints\":[\"api.dlazy.com\",\"files.dlazy.com\"]},\"openclaw\":{\"systemPrompt\":\"When invoking this skill, read the 露脸预算 section of SKILL.md before quoting any cost, and read recipes.md before writing any base-portrait prompt. Run `dlazy <model> -h` to confirm current flags before building a command.\"}}\n---\n\n# 知识付费讲师数字人\n\n课程视频跟带货视频最大的不同：**观众来看的不是你的脸，是你屏幕上的东西。**\n\n这句话不是审美判断，是成本判断。`jimeng-omnihuman-1.5` 按音频秒数计费，1080p 是 **23 积分/秒**。一节 20 分钟的课全程用数字人驱动：\n\n```\n1200 秒 × 23 = 27600 积分（驱动）\n```\n\n而同样一节课，讲师只在开场、章节转场、结尾露脸（约 110 秒），其余画面是课件 + 配音：\n\n```\n110 秒 × 23 = 2530 积分（驱动）  ——  省掉 90.8%\n```\n\n算上配音，两条路线的**全成本**是 2640 对 27840，详见下面的\"露脸预算\"。\n\n**省下的 25000 积分不是靠妥协换来的，成片反而更像一门正经的课。** 全程一张脸对着你讲 20 分钟，是知识付费里完播率最差的形态之一。\n\n所以这个技能的核心不是\"怎么把数字人做得更真\"，而是**怎么把数字人用在该用的 110 秒上**，剩下的交给课件。底图配方解决前者，露脸预算解决后者。\n\n## 何时使用\n\n- 做小鹅通 / 腾讯课堂 / 知识星球 / B 站 / YouTube 的付费课或公开课\n- 企业内训、SOP 培训、新员工入职课程\n- 一门课几十节，需要**同一个讲师形象跨集稳定复用**\n- 已有 PPT / 讲义 / 文档，想变成有讲师出镜的课程视频\n- 真人讲师没时间录制，或需要多语言版本\n\n不适用于：单条知识口播短视频（用 `dlazy-short-video`，竖屏逻辑不同）、纯课件无讲师的文档转视频（直接 `dlazy chat --skill file-to-video`）、数学公式推导动画（那是 `math-explainer-video` 模板的活）。\n\n## 与带货版的根本差异\n\n如果你用过 `dlazy-ecommerce-avatar`，这五处是**不能照搬**的：\n\n| | 带货 | 课程 |\n|---|---|---|\n| 画幅 | 竖屏 9:16 | **横屏 16:9** |\n| 构图 | 人物居中 | **人物偏侧，留出内容区** |\n| 露脸 | 全程 | **只在开场/转场/结尾** |\n| 单集时长 | 30~60 秒 | **8~40 分钟**（要切几十段） |\n| 合规红线 | 广告法第九条（绝对化、疗效） | **广告法第二十四条**（升学承诺、通过率、资质） |\n\n尺寸参数尤其容易串。带货是 `--size 2160x3840`，课程是 `--size 3840x2160`——写反了不报错，出一张竖图，然后你会在装配那一步才发现。\n\n## 五条硬约束\n\n**1. 横屏直接上 4K，不额外花钱。**\n\n`gpt-image-2` 的计费**只看 `--quality` 和有没有参考图，完全不看 `--size`**（源码核对：`config/models/gpt-image-2.ts` 的 `costs`）。所以：\n\n```\n--size 2048x1152 --quality high   →  37 积分\n--size 3840x2160 --quality high   →  37 积分   ← 同价，直接用这个\n```\n\n横屏的 16:9 有两档（`2048x1152` / `3840x2160`），**竖屏只有 4K 一档**（`2160x3840`）。既然同价，中等档只在你需要小文件时才有意义。\n\n注意 `1536x1024` 是 **3:2 不是 16:9**，拿去做课程封面会被平台裁掉两边。\n\n**2. 底图要给内容留位置。**\n\n课程画面的左侧（或右侧）三分之二要放 PPT、板书、代码、图表。讲师站在剩下的三分之一里。\n\n这意味着底图**不能居中构图**——居中的人像叠上课件，要么挡内容，要么只能缩成一个小圆窗浪费掉整张 4K。配方 11 是为此专门写的，课程主力就用它。\n\n反过来，开场白和结尾这两段没有课件，用配方 12 的全画幅中近景，视觉上形成\"打招呼 → 讲内容 → 总结\"的节奏。\n\n**3. 一门课的底图必须一次定死。**\n\n带货可以每条视频换个人设，课程不行。第 3 节的讲师换了件衣服，观众立刻出戏。\n\n**开课前把底图存成文件，之后几十节全部引用同一个文件。** 不要指望同一段 prompt 能复现同一张脸——两次采样出的不是一个人。详见\"保持同一张脸\"。\n\n**4. 时长是硬上限，一节课要切几十段。**\n\n`jimeng-omnihuman-1.5` 的音频上限：**1080p ≤ 30 秒，720p ≤ 60 秒**。\n\n按每秒 4.5 字算（实测 `qwen-tts` 为 4.54~4.71 字/秒），30 秒 ≈ 130 字。而 `qwen-tts` 自己的 prompt 上限是 **512 字符**——中文一个字算一个字符，加标点后 130 字很安全。\n\n写讲稿时就**按 110~130 字一段切好**，别写完 20 分钟才回头切，语气会断。\n\n**5. 中文 prompt 走 `--input` JSON 文件。**\n\n用 shell 变量拼中文，在 Windows 上会静默变乱码——命令照样返回 `ok: true`，但出图跟 prompt 毫无关系。批量生产一律：\n\n```bash\ndlazy gpt-image-2 --input @payload.json --save ./lecturer/base.png\n```\n\n详见 `troubleshooting.md` 的\"编码陷阱\"。不确定参数时先 `--dry-run`，打印载荷和积分预估，不出图不扣分。\n\n## 露脸预算\n\n这是本技能最该记住的一张表。以一节 **20 分钟**的课为例：\n\n| 段落 | 时长 | 画面 | 驱动 | TTS | 小计 |\n|---|---|---|---|---|---|\n| 开场白 | 30 秒 | 讲师全画幅 | 690 | 6 | 696 |\n| 章节转场 × 6 | 各 10 秒 | 讲师偏侧 + 章节标题 | 1380 | 36 | 1416 |\n| 正文讲解 | 18 分钟 | **课件 + 配音，无讲师** | 0 | 60 | 60 |\n| 结尾总结 | 20 秒 | 讲师全画幅 | 460 | 6 | 466 |\n| 合计 | 20 分钟 | | 2530 | 108 | **约 2640** |\n\n对照全程驱动的 27840 积分（27600 驱动 + 240 TTS）。**同一节课，差 10 倍以上。**\n\n正文那 18 分钟只要 60 积分，是因为 **`qwen-tts` 固定 6 积分一次，与字数无关**（源码核对：`costs` 直接 `return 6`）。由此得到一条不显然的优化：\n\n> **正文段不做驱动，不受 30 秒时长限制，所以每次调用应该把 512 字符写满。**\n\n写满是 10 次调用 60 积分；如果沿用露脸段那种 130 字一段的切法，同样的内容要 38 次调用 228 积分。**白花 168 积分买了同一段音频。** 露脸段受驱动的 30 秒上限约束只能切短，正文段没有这个约束——两者的切法必须分开。\n\n想再省，两个杠杆：\n\n- **降到 720p**：15 积分/秒，再省 35%。讲师小窗在 720p 下完全够用——它在成片里只占画面的六分之一，观众看不出差别。全画幅的开场结尾建议留在 1080p。\n- **章节转场用静态卡**：把 6 次转场里的一半换成纯课件动画，只保留关键章节露脸，再省 700 左右。\n\n**不要省的地方是底图那 37 积分。** 一张底图要服务几十节课，摊下来趋近于零；底图不合格导致驱动失败，一次就是几百上千积分。\n\n## 流水线\n\n```\n① 底图     gpt-image-2 (2000字) / seedream-5.0 (500字)   ← 提示词杠杆全在这\n② 讲稿     claude-sonnet-5 / qwen3.8-max                  ← 按 110~130 字/段切好\n③ 配音     qwen-tts (512字符上限) / doubao-tts            ← 全课必须同一音色\n④ 驱动     jimeng-omnihuman-1.5 (300字, ≤30秒@1080p)      ← 只做露脸段；单点依赖\n⑤ 课件     Remotion 模板 / gpt-image-2 出静态板           ← 正文主体在这\n⑥ 装配     dlazy chat --skill file-to-video               ← CLI 本身不做合成\n```\n\n**CLI 没有视频合成能力。** `dlazy` 是模型调用器，没有 merge / concat 命令。要交付 mp4，最后一步必须走沙箱模板或你自己的 ffmpeg。\n\n**④ 是单点依赖。** 5 个数字人模型里只有 `jimeng-omnihuman-1.5` 吃「静态图 + 音频」，其余四个都要「现成的说话视频 + 音频」才能换口型。它一挂整条链路就断，降级成本翻倍。\n\n**⑤ 是课程版真正的主战场。** 带货版这一层只是插几个产品空镜，课程版这一层是全片 90% 的画面。`file-to-video` 模板能把 PPT / Word / PDF 直接解析成带旁白和字幕的课件视频，讲师片段作为素材叠进去。完整命令见 `pipeline.md`。\n\n## 配方索引\n\n`recipes.md` 里有 16 条配方，参数全部经源码核对，可直接粘贴执行。\n\n| 组 | 配方 | 适用 |\n|---|---|---|\n| A 讲台场景 | 01 纯色抠像位 / 02 书房 / 03 教室白板 / 04 演播室 / 05 咖啡厅 / 06 工位实操 | 按课程调性选一条 |\n| B 学科人设 | 07 学术专家 / 08 职场导师 / 09 语言教师 / 10 技术讲师 | 按学科选，注意 07 的资质合规 |\n| C 景别机位 | 11 **右三分之一构图** / 12 全画幅中近景 / 13 小窗特写 | 11 是正文主力，12 开场结尾，13 画中画 |\n| D 课件视觉 | 14 章节封面板 / 15 概念示意图 / 16 课程封面 | 第 ⑤ 层的静态素材 |\n\n选不动就用 **配方 11 + 配方 12 这一对**：11 出正文用的偏侧构图，12 出开场结尾用的全画幅，同一人设两个机位，一门课就够了。\n\n## 保持同一张脸\n\n一门课几十节，人设一致性是刚需。三种做法，从稳到弱：\n\n1. **存图复用**（唯一推荐）——第一次满意后把底图存成文件，全课引用同一个文件，脸 100% 一致\n2. **参考图重绘**——`gpt-image-2 --images base.png --prompt \"同一人物，换成...\"`，能换背景保住脸，但**积分从 37 涨到 60**（有参考图时 high 档计费不同），且跨集微妙差异会累积\n3. **纯文字复现**——不要用。同样的 prompt 两次出的脸不是一个人\n\n配方 11 / 12 / 13 是同一人设的三个机位，**必须用做法 2 从同一张底图派生**，不要各自独立生成——否则三个机位是三个人。\n\n## 认证\n\n```bash\ndlazy login          # 设备码流程，自动保存 key\ndlazy auth set KEY   # 已有 key 时直接写入\n```\n\nKey 从 https://dlazy.com/dashboard/organization/api-key 获取，保存在 `~/.dlazy/config.json`。也可用 `DLAZY_API_KEY` 环境变量按次传入。\n\n积分不足返回 `insufficient_balance`，充值入口：https://dlazy.com/dashboard/organization/settings?tab=credits\n\n## Reference Map\n\n| 文件 | 内容 |\n|---|---|\n| `recipes.md` | 16 条底图与课件配方，完整可执行命令 + 每条的驱动注意事项 |\n| `pipeline.md` | ①~⑥ 逐步命令，含分段批处理、画中画合成、成本估算 |\n| `troubleshooting.md` | 驱动失败对照表、长课程批处理陷阱、教培合规红线 |\n\nFile v1.0.18:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"dlazy-course-avatar\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1791594160332\n}\n\nFile v1.0.18:pipeline.md\n\n# 完整流水线 · 从讲义到成片\n\n以\"一节 20 分钟横屏课程\"为例，逐步给出可执行命令。\n\n## 先定成片形态\n\n动手前先定这个，它决定了成本量级，改起来要重做。\n\n**A. 串行（推荐）** —— 讲师段与课件段前后接续，同一时刻只有一种画面：\n\n```\n[讲师 开场 30s] → [课件 正文] → [讲师 转场 10s] → [课件 正文] → … → [讲师 结尾 20s]\n```\n\n讲师只需驱动 110 秒 ≈ **2640 积分**。这是知识付费最主流的形态，也是本技能的默认路线。\n\n**B. 全程画中画** —— 课件铺满，讲师小窗常驻右下角：\n\n讲师要驱动满 1200 秒 ≈ **27840 积分**。**10 倍成本**，换来的只是一个六分之一大小的常驻人头。除非甲方明确要求，否则不值。\n\n**C. 局部画中画（折中）** —— 串行为主，只在 2~3 个关键讲解点让小窗出现 30 秒：\n\n比 A 多花约 2000 积分，换来\"讲师一直在场\"的感觉。做企业内训、需要强讲师存在感时用这条。\n\n下面按 **A** 展开，⑥ 里给出画中画的合成命令（C 用得上）。\n\n## 成本结构\n\n| 步骤 | 命令 | 积分 |\n|---|---|---|\n| ① 底图 | `gpt-image-2 --quality high` | 37（一门课一次） |\n| ① 派生机位 | `gpt-image-2 --images` | 60 × 2（一门课一次） |\n| ② 讲稿 | `claude-sonnet-5` | 个位数 |\n| ③ 配音 | `qwen-tts` **固定 6 积分/次** | 约 108 |\n| ④ **驱动** | `jimeng-omnihuman-1.5` 1080p × 110 秒 | **2530** |\n| ⑤ 课件 | `gpt-image-2` 静态板 × N | 37 × N |\n| ⑥ 装配 | 沙箱模板 / 自己 ffmpeg | — |\n| 单节合计 | | **约 2650** |\n\n底图那 157 积分（37 + 60×2）是**整门课一次性**的，摊到 30 节上每节 5 积分。\n\n**驱动占 95%。** 所以省钱只有一个方向：**砍露脸时长**，不是砍画质。\n\n## ① 底图\n\n从 `recipes.md` 选一条，先出正文主力机位（配方 11），再派生另外两个机位：\n\n```bash\n# 主力机位：右三分之一构图，左侧留给课件\ndlazy gpt-image-2 --input @payload/base.json --batch 4 --save ./lecturer/11-third.png\n\n# 从它派生开场/结尾用的全画幅（保住同一张脸）\ndlazy gpt-image-2 --images ./lecturer/11-third.png --input @payload/derive-full.json \\\n  --save ./lecturer/12-full.png\n```\n\n`--batch 4` 并行出 4 张选一张（积分 ×4 = 148）。**人脸一次难中，这个钱值得花一次**——选定后这张脸要用几十节课。\n\n出图后按 `recipes.md` 末尾的检查清单逐项过再往下走。带着一张不合格的底图，后面每一节课的驱动积分都是白花的。\n\n## ② 讲稿\n\n**关键：露脸段和正文段用两种切法。** 这是课程版最容易做错的一步。\n\n| | 切法 | 为什么 |\n|---|---|---|\n| 露脸段 | **110~130 字一段** | 受 omnihuman 的 30 秒硬上限约束 |\n| 正文段 | **写满 500 字符** | 不驱动，无时长约束；TTS 固定 6 积分/次，写满省钱 |\n\n中文口播约 **每秒 4.5 字**（实测 `qwen-tts` 为 4.54~4.71 字/秒），130 字 ≈ 29 秒，卡在 30 秒上限内安全。\n\n```bash\ndlazy claude-sonnet-5 --prompt \"为这门课的第 3 节写讲稿。\n主题：<本节主题>\n时长：20 分钟，共 6 个章节\n输出三类文本，用 === 分隔：\n1. 开场白：110 字以内，抛出本节要解决的问题，不要自我介绍和寒暄\n2. 章节转场 × 6：每条 45 字以内，承上启下，点出下一章要讲什么\n3. 正文讲解 × 6：每章一段，每段严格控制在 480 字以内（含标点），\n   语言口语化可直接朗读，有具体例子和数字，避免书面语和排比句\n4. 结尾总结：90 字以内，收束要点并给出下一节的钩子\n合规要求：不得出现升学率、通过率、保过、包会等承诺性表述，\n不得虚构任何机构背书、职称或从业资质\n输出纯文本，不要任何解释\"\n```\n\n最后那条合规要求是硬线，别删——原因见 `troubleshooting.md` 的\"教培合规红线\"。\n\n## ③ 配音\n\n`qwen-tts` 的 prompt **上限 512 字符，超出整次请求 400，积分不退**。\n\n`qwen-tts` 的输出是 **WAV 不是 MP3**（响应 URL 后缀为 `.wav`，文件头为 `RIFF/WAVE`）。`--save` 只决定本地文件名，不做转码——存成 `.mp3` 会得到一个扩展名骗人的 WAV 文件，第 ⑥ 步 ffmpeg 装配时按扩展名推断格式就会出错。**存成 `.wav`。**\n\n\n```bash\n# 露脸段（短，受驱动时长约束）\ndlazy qwen-tts --input @payload/tts-open.json  --save ./audio/open.wav\ndlazy qwen-tts --input @payload/tts-trans1.json --save ./audio/trans1.wav\n\n# 正文段（写满 500 字符，一次调用顶四次）\ndlazy qwen-tts --input @payload/tts-body1.json --save ./audio/body1.wav\n```\n\n`payload/tts-open.json` 形如：\n\n```json\n{ \"prompt\": \"<文本>\", \"voice\": \"Cherry\" }\n```\n\n音色选择：\n\n- `--voice Cherry`（默认，年轻女声）\n- `--voice Serena` / `Vivian`（成熟女声，适合人文、管理类）\n- `--voice Ethan` / `Ryan`（男声，适合技术、商业类）\n- 全部系统音色见 `dlazy qwen-tts -h`\n\n要更贴合人设的声音，用设计模式自然语言描述：\n\n```bash\ndlazy qwen-tts --generation_mode design \\\n  --voice_prompt \"40岁男性，语速平稳偏慢，讲课语气，重点处有自然停顿，不夸张\" \\\n  --prompt \"<文本>\" --save ./audio/open.wav\n```\n\n**整门课必须用同一个音色。** 不只是同一节课——第 5 节换了声音，等于换了老师。把音色 id 写进项目配置文件，别靠记忆。\n\n课程配音比带货要**慢**。带货求煽动，课程求听得清。设计模式里写\"语速平稳偏慢\"比默认语速更适合教学。\n\n## ④ 驱动\n\n**只驱动露脸段。** 正文段没有讲师画面，跳过这一步——这就是省下 90% 积分的地方。\n\n**这一步是单点依赖。** dLazy 有 5 个数字人相关模型，只有 `jimeng-omnihuman-1.5` 接受「静态图 + 音频」：\n\n| 模型 | 输入 | 能否用底图驱动 |\n|---|---|---|\n| `jimeng-omnihuman-1.5` | `--images` + `--audio` | ✅ 唯一 |\n| `videoretalk` | `--video_url` + `--audio_url` | ❌ 要现成视频 |\n| `sync-lipsync-3` | `--video_url` + `--audio_url` | ❌ 要现成视频 |\n| `heygen-lipsync-speed` | `--video_url` + `--audio_url` | ❌ 要现成视频 |\n| `jimeng-dream-actor` | `--images` + `--videos` | ❌ 动作迁移，不吃音频 |\n\n它一挂整条链路就断。降级路径是「i2v 生成说话视频 → videoretalk 对口型」，成本翻倍，能走主路径就别走。\n\n```bash\n# 开场：全画幅机位\ndlazy jimeng-omnihuman-1.5 \\\n  --images ./lecturer/12-full.png \\\n  --audio ./audio/open.wav \\\n  --input @payload/drive.json \\\n  --resolution 1080p \\\n  --save ./clips/open.mp4\n\n# 章节转场：偏侧机位，可降 720p 省钱\ndlazy jimeng-omnihuman-1.5 \\\n  --images ./lecturer/11-third.png \\\n  --audio ./audio/trans1.wav \\\n  --input @payload/drive.json \\\n  --resolution 720p \\\n  --save ./clips/trans1.mp4\n```\n\n`--prompt` 上限 **300 字符且可选**（`payload/drive.json` 里就一行）。它控制的是**运镜与动作幅度**，不是画面内容——画面已被底图定死。课程场景的有效写法：\n\n| 想要 | 写法 |\n|---|---|\n| 讲课标准态 | `人物自然讲解，幅度克制，偶尔轻微点头，身体基本不动` |\n| 开场问候 | `人物微笑讲话，开场有轻微的点头示意，表情自然亲和` |\n| 强调重点 | `人物讲解语气加重时头部小幅前倾，眼神专注` |\n\n**不要写**画面描述、镜头运动、服装——底图已经定了，写了不生效还占额度。\n\n**它对手部的控制有限。** 实测（带货版）：底图双手完全不入镜、prompt 明确写了\"手部不做大幅动作\"，omnihuman 仍自行生成了双手抬到胸前的讲解动作。要避免只能从底图的景别入手，靠 prompt 挡不住。\n\n**`fast_mode` 参数**：`jimeng-omnihuman-1.5` 有 `--fast_mode` 开关（默认 false）。计费逻辑只看 `resolution` 不看它（源码核对），所以开了**不涨价也不降价**，是纯粹的速度/质量取舍。一节课要跑十几段时值得试一次对比效果。\n\n批量跑（一节课有 8 段露脸），用 `--no-wait` 并发发出：\n\n```bash\nfor seg in open trans1 trans2 trans3 trans4 trans5 trans6 end; do\n  dlazy jimeng-omnihuman-1.5 --images ./lecturer/11-third.png \\\n    --audio ./audio/$seg.wav --resolution 720p --no-wait\ndone\n# 各自返回 generateId，再逐个取回\ndlazy status <generateId> --save ./clips/open.mp4\n```\n\n**第一次跑完，先探一下输出规格**（各模型规格互不相同，⑥ 要用）：\n\n```bash\nffprobe -v error -select_streams v:0 -show_entries stream=width,height,r_frame_rate -of csv=p=0 ./clips/open.mp4\nffprobe -v error -select_streams a:0 -show_entries stream=sample_rate,channels -of csv=p=0 ./clips/open.mp4\n```\n\n带货版实测竖屏 720p 档出的是 **704x1248 @ 25fps / 24000Hz 单声道**（不是标准 720x1280），且成片比输入音频长 0.1~0.2 秒。**横屏档的实际输出尺寸尚未实测**，第一次跑完务必自己探一次，把结果填进 ⑥ 的命令里。\n\n## ⑤ 课件\n\n正文那 18 分钟的画面主体。三条路，按精度需求选：\n\n**A. `file-to-video` 模板（推荐）** —— 已有 PPT / Word / PDF 讲义时，直接解析成带旁白和字幕的课件视频：\n\n```bash\ndlazy chat --skill file-to-video \\\n  --prompt \"把这份讲义做成 18 分钟的课程视频，六个章节，\n每章配旁白和字幕，风格克制专业，用深墨蓝配琥珀的双色系统，\n章节之间加过渡卡，不要花哨转场\" \\\n  --files ./讲义.pptx\n```\n\n它内部走 Remotion，**文字是真排版不是生图**，中文清晰可控可改。\n\n**B. 静态板 + Remotion 排版** —— 没有现成讲义时，用 `recipes.md` D 组出背景板，文字在 Remotion 里排：\n\n```bash\ndlazy gpt-image-2 --input @payload/chapter.json --save ./slides/ch1.png\n```\n\n**C. `math-explainer-video` 模板** —— 公式推导、定理可视化类课程，KaTeX 排公式 + SVG 画图：\n\n```bash\ndlazy chat --skill math-explainer-video --prompt \"把贝叶斯公式的推导做成 3 分钟动画讲解\"\n```\n\n**永远不要让生图模型写课件上的字。** 中文必然乱码，英文经常拼错，而且改一个字就要重出整张图。生图只负责背景和意象，文字交给 Remotion。\n\n## ⑥ 装配\n\n**CLI 不做视频合成。** `dlazy` 是模型调用器，没有 merge / concat 命令。\n\n**下面的 ffmpeg 命令均已本地实跑验证**（用 lavfi 造的规格不一致素材：1248x704@25fps/24000Hz mono 的讲师段 + 1920x1080@30fps/44100Hz stereo 的课件段），语法和规格统一逻辑确认可用。真实素材的规格请按 ④ 末尾探到的实际值替换。\n\n### 串行拼接（形态 A）\n\n**各段规格互不相同，必须全重编码。** `-c copy` 和 `-c:v copy` 都不能用——带货版实测过，视频流会刷屏 `Non-monotonic DTS`，产物被塞进错误的容器，画面不花但音画不同步。\n\n```bash\nffmpeg -i clips/open.mp4 -i slides/body1.mp4 -i clips/trans1.mp4 -filter_complex \\\n\"[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25[v0];\\\n[1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25[v1];\\\n[2:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25[v2];\\\n[0:a]aformat=sample_rates=44100:channel_layouts=stereo[a0];\\\n[1:a]aformat=sample_rates=44100:channel_layouts=stereo[a1];\\\n[2:a]aformat=sample_rates=44100:channel_layouts=stereo[a2];\\\n[v0][a0][v1][a1][v2][a2]concat=n=3:v=1:a=1[v][a]\" \\\n-map \"[v]\" -map \"[a]\" -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \\\n-c:a aac -ar 44100 -ac 2 lesson.mp4\n```\n\n实测结果：零警告，三段 6 + 10 + 4 秒拼出 **20.04 秒**（误差 0.04），输出统一为 1920x1080 / 25fps / 44100Hz stereo。\n\n**用 `aformat` 不要用 `aresample`。** `aresample=44100` 只统一采样率，不统一声道数——讲师段是单声道、课件段是立体声，混着送进 `concat`。ffmpeg 7.0 实测能自动协商跑通，但这是版本行为，不保险。`aformat=sample_rates=44100:channel_layouts=stereo` 把两项都显式钉死，两种写法输出完全一致，没有理由用前者。\n\n段数变化时改三处：输入 `-i` 的个数、`[vN]/[aN]` 的编号、`concat=n=` 的数字。\n\n### 画中画（形态 C）\n\n课件铺满，讲师小窗叠在右下角。\n\n**矩形小窗**（推荐，最稳）：\n\n```bash\nffmpeg -i slides/body2.mp4 -i clips/talk2.mp4 -filter_complex \\\n\"[1:v]scale=480:-2,setsar=1[pip];[0:v][pip]overlay=W-w-48:H-h-48:shortest=1[v]\" \\\n-map \"[v]\" -map 1:a -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \\\n-c:a aac -ar 44100 -ac 2 pip.mp4\n```\n\n**`shortest=1` 不能省。** 实测：讲师视频 6 秒、课件 10 秒，不加这个参数输出会是 10 秒——后 4 秒讲师小窗**定格成一张照片**（overlay 默认 `repeatlast=1`），音轨同时静音，看起来像播放器卡死。加上后输出 6.02 秒，跟随讲师段结束。\n\n`-map 1:a` 取讲师的音频（画中画时是讲师在讲）。`scale=480:-2` 的 `-2` 让高度按比例自适应并保持偶数（libx264 要求）。\n\n**圆形小窗**（更像课程直播，实测可用）：\n\n```bash\nffmpeg -i slides/body2.mp4 -i clips/talk2.mp4 -filter_complex \\\n\"[1:v]scale=360:360:force_original_aspect_ratio=increase,crop=360:360,setsar=1,format=rgba,\\\ngeq=r='r(X,Y)':g='g(X,Y)':b='b(X,Y)':a='if(gt(pow(X-W/2,2)+pow(Y-H/2,2),pow(W/2,2)),0,255)'[pip];\\\n[0:v][pip]overlay=W-w-48:H-h-48:shortest=1[v]\" \\\n-map \"[v]\" -map 1:a -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \\\n-c:a aac -ar 44100 -ac 2 pip_circle.mp4\n```\n\n`geq` 逐像素算 alpha，**比矩形版慢得多**。长视频建议先用矩形版对好时间轴，最后再换圆形出一次。\n\n圆形裁切要求底图下巴留足余量，否则圆一裁下巴就没了——这是 `recipes.md` 配方 13 存在的原因。\n\n### 或者交给沙箱模板\n\n需要字幕、章节标题、转场动画时，比手写 ffmpeg 省事：\n\n```bash\ndlazy chat --skill file-to-video \\\n  --prompt \"把这些素材装配成一节 20 分钟的课程视频：open.mp4 开场，\n之后六个章节的课件段与转场讲师段交替，end.mp4 结尾，全片加中文字幕，\n章节开头加标题卡\" \\\n  --files ./clips/*.mp4 ./slides/*.mp4\n```\n\n沙箱返回项目 id，后续用 `dlazy chat --project <id> --prompt \"...\"` 继续调整。\n\n## 一次性跑完的脚本骨架\n\n**中文一律走 JSON 文件，不要用 shell 变量。** 见 `troubleshooting.md` 的\"编码陷阱\"——用 `$(cat ...)` 拼中文 prompt 会静默产生乱码，命令照样返回 `ok: true`，出来的东西跟你要的毫无关系。\n\n```bash\n#!/usr/bin/env bash\nset -e\nmkdir -p lecturer audio clips slides payload\n\n# 底图整门课只做一次，做完注释掉\n# dlazy gpt-image-2 --input @payload/base.json --batch 4 --save ./lecturer/11-third.png\n# dlazy gpt-image-2 --images ./lecturer/11-third.png --input @payload/derive-full.json --save ./lecturer/12-full.png\n\n# 露脸段：配音 + 驱动\nfor seg in open trans1 trans2 trans3 trans4 trans5 trans6 end; do\n  dlazy qwen-tts --input @payload/tts-$seg.json --save ./audio/$seg.wav\ndone\n\ndlazy jimeng-omnihuman-1.5 --images ./lecturer/12-full.png \\\n  --audio ./audio/open.wav --input @payload/drive.json \\\n  --resolution 1080p --save ./clips/open.mp4\n\nfor seg in trans1 trans2 trans3 trans4 trans5 trans6; do\n  dlazy jimeng-omnihuman-1.5 --images ./lecturer/11-third.png \\\n    --audio ./audio/$seg.wav --input @payload/drive.json \\\n    --resolution 720p --save ./clips/$seg.mp4\ndone\n\ndlazy jimeng-omnihuman-1.5 --images ./lecturer/12-full.png \\\n  --audio ./audio/end.wav --input @payload/drive.json \\\n  --resolution 1080p --save ./clips/end.mp4\n\n# 正文段：写满 512 字符，一次调用顶四次\nfor i in 1 2 3 4 5 6; do\n  dlazy qwen-tts --input @payload/tts-body$i.json --save ./audio/body$i.wav\ndone\n\n# 课件与装配交给沙箱模板（CLI 不做合成）\necho \"露脸段与配音已就绪，接下来跑 ⑤ 与 ⑥\"\n```\n\n所有 JSON 用 **UTF-8** 保存。`payload/drive.json` 就一行：\n\n```json\n{ \"prompt\": \"人物自然讲解，幅度克制，偶尔轻微点头，身体基本不动\" }\n```\n\n跑之前先在每条命令后加 `--dry-run` 走一遍，确认参数和积分预估。一节课十几次驱动调用，参数写错一个字母就是几百积分。\n\nFile v1.0.18:recipes.md\n\n# 底图配方库 · 知识付费讲师数字人\n\n16 条配方。A~C 组是讲师人像，D 组是课件视觉素材。每条都是可直接粘贴执行的完整命令。\n\n## 使用前必读\n\n**实测状态。** 本库的**参数**全部经源码核对（`config/models/gpt-image-2.ts` 与 `jimeng-omnihuman-1-5.ts` 的 zod schema 与 costs 函数），尺寸枚举、字数上限、计费系数可以放心用。\n\n**已实跑并逐张核对的三条**（2026-08-28，各跑一次一次命中，未重试）：\n\n| 配方 | 核对结论 |\n|---|---|\n| 01 · 纯色抠像位 | 背景纯色无渐变、发丝边缘锐利可抠，人物居中。裁切位比 prompt 写的\"胸口\"略低，不影响画中画使用 |\n| 11 · 右三分之一构图 | 人物中轴命中约 75%，左侧三分之二完全空旷、明度均匀，可直接叠课件。**\"百分之七十五\"这个写法确实有效** |\n| 14 · 章节封面板 | 无任何假文字混入（这条是本库最容易翻车的），三色配色与留白区都符合 |\n\n驱动链路也已端到端跑通：配方 11 底图 → `qwen-tts` → `jimeng-omnihuman-1.5 --resolution 720p` → 出片。\n\n**其余 13 条仍未实跑。** 第一次用时加 `--batch 4` 并逐张检查，特别是\"注意\"里标出的高风险项。发现偏差请回写到对应配方下面，这个库要靠使用积累。\n\n**配方结构。** 每条 prompt 按同一骨架写，改的时候按段改，不要整段重写：\n\n```\n身份气质 → 妆造服装(材质) → 姿态手部 → 表情眼神 → 景别构图(焦段/机位/留白区)\n→ 背景景深 → 光线方案(主光/补光/光比) → 色彩基调 → 画质质感 → 驱动约束\n```\n\n比带货版多出的是**留白区**——课程画面要给课件让位置，这一段决定了这张底图能不能直接用。\n\n最后那段**驱动约束**是 A~C 组共有的，删了就容易驱动失败：\n\n> 单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\n\nD 组不是人像，没有这一段。\n\n**尺寸速记。** 课程横屏一律 `--size 3840x2160`。计费不看尺寸（只看 `--quality` 和有无参考图），所以 4K 与 `2048x1152` 同价 37 积分，直接用 4K。**别写成 `2160x3840`**，那是竖屏。\n\n**省积分替代。** 主命令用 `gpt-image-2 --quality high`（37 积分），中文语境理解最准。预算敏感时换 `seedream-5.0`（4K 仅 **8 积分**）：\n\n```bash\ndlazy seedream-5.0 --prompt \"<同一条配方 prompt>\" --size 16:9 --resolution 4k --save ./lecturer/base.png\n```\n\n本库配方长度控制在 **500 字符以内**，卡在 `seedream-5.0` 的上限之内，可以原样粘过去。\n\n**同一人设的三个机位必须派生，不能各自生成。** 配方 11 / 12 / 13 是一门课的三个机位。先用 11 出底图存档，12 和 13 用 `--images` 从它派生（见每条的\"派生命令\"），否则你会得到三个长得不一样的老师。派生时积分从 37 涨到 **60**。\n\n---\n\n## A 组 · 讲台场景\n\n按课程调性选一条。\n\n### 01 · 纯色抠像位 ⭐ 画中画首选\n\n**适用**：要把讲师做成画中画小窗叠在课件上。纯色背景便于后期抠像或直接圆形遮罩。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 34 岁左右的亚洲女性课程讲师，气质专业亲和可信，妆容干净自然的职业淡妆，豆沙色哑光唇色，肤质自然真实保留皮肤纹理，不做过度磨皮。发型为黑色及肩直发梳理整齐，发丝边缘清晰锐利与背景分离明确。上身穿雾霾蓝色圆领针织衫，面料织纹细腻，剪裁合身简洁，无任何图案文字logo。姿态为站立正面朝向镜头，双肩放松水平，双手自然垂放在身体两侧完全不入镜。表情为温和的浅笑，嘴角自然，眼神平视镜头专注有交流感。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物居中，画面下缘裁切在胸口位置。背景为完全均匀的浅灰蓝色纯色无缝背景，无任何渐变纹理道具文字，人物与背景明度差明显便于边缘分离。光线方案为正面双侧对称柔光箱主光加顶部发丝光，光比 1.2:1，面部受光极其均匀无阴影，背景独立布光亮度均匀一致。整体色彩基调为干净的低饱和冷灰调。画质为专业摄影棚商业人像，细节锐利，发丝边缘干净。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/01-keyable.png\n```\n\n**注意**：背景**必须是纯色不能有渐变**——渐变背景抠像时边缘会发脏。`--quality high` 在这条上不能降，发丝边缘是抠像成败的关键。\n\n不推荐用纯绿幕：omnihuman 驱动后的视频经过压缩，绿边溢色比浅灰蓝更难处理。圆形遮罩方案见 `pipeline.md` ⑥。\n\n---\n\n### 02 · 书房知识博主\n\n**适用**：人文、商业、心理、写作类课程。知识付费最经典的场景，信任感最好建立。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 38 岁左右的亚洲男性知识课程讲师，气质儒雅沉稳有学识感，短发梳理整齐两鬓有少量自然白发，面部有真实的年龄纹理与皮肤质感不做美颜。上身穿深灰蓝色羊毛开衫内搭浅灰色圆领衫，面料质感厚实有织纹，剪裁松弛得体。姿态为坐姿正面朝向镜头，背部挺直微微前倾表现投入感，双手轻放在桌面边缘仅露出手腕不入画。表情为平和从容的微笑，眼神温和平视镜头有沉稳的说服力。景别为中近景半身像，50mm 标准镜头，机位与视线齐平，人物位于画面右侧三分之一处，左侧三分之二留出大面积干净的背景区域。背景为温暖的书房环境，身后是深胡桃木色书架与排列整齐的书籍脊背，全部被大光圈虚化成柔和的暖色块，书脊上无任何可读文字。光线方案为侧前方窗户自然光作主光柔和漫射，另一侧暖色台灯补光，光比 2:1，面部有自然明暗过渡。整体色彩基调为低饱和的暖棕木质调。画质为自然光人文肖像摄影，真实细腻有空气感。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/02-study.png\n```\n\n**注意**：书架是模型最爱自作主张写字的地方。prompt 已写\"书脊上无任何可读文字\"，出图后仍要**放大检查书脊**——生成的假书名多半是乱码或不存在的英文，糊在成片里很掉档次。\n\n---\n\n### 03 · 教室白板\n\n**适用**：K12 学科辅导、考证培训、技能教学。有板书感，天然适合叠加公式和要点。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 32 岁左右的亚洲女性教师，气质干练清爽有亲和力，妆容为明亮干净的职业淡妆，肤质真实自然保留纹理。发型为黑色长发扎成利落低马尾，额前无碎发遮挡。上身穿浅杏色西装外套内搭白色衬衫，面料挺括有型，剪裁专业无任何图案文字。姿态为站立正面朝向镜头，身体略微侧向左侧，双肩放松，双手自然垂放身侧不入镜。表情为自信明朗的微笑，眉眼舒展，眼神平视镜头有讲解的专注感。景别为中近景半身像，50mm 镜头，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为大面积空白留白区域。背景为现代明亮的教室环境，身后是一整面干净的白色白板，白板上完全空白无任何字迹图形，白板边缘与浅灰墙面有轻微虚化。光线方案为教室顶部均匀漫射光加正面柔光补光，光比 1.3:1，面部通透明亮，白板受光均匀无反光光斑。整体色彩基调为明亮清爽的高明度中性调。画质为高清教育机构宣传摄影，清晰专业。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/03-classroom.png\n```\n\n**注意**：白板必须**完全空白**。模型很爱在白板上画公式和涂鸦，出来一定是乱码。空白白板才是最好的画布——后期用 Remotion 在上面排真正的板书，字才是清楚的。\n\n白板反光是另一个风险，prompt 已写\"无反光光斑\"，出图检查白板中央有没有一块高光。\n\n---\n\n### 04 · 演播室专业讲台\n\n**适用**：企业内训、认证课程、高客单价专业课。正式感最强。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 40 岁左右的亚洲男性资深讲师，气质权威沉稳有分量感，短发利落，面部轮廓清晰有真实的皮肤纹理与轻微胡茬阴影，不做美颜处理。上身穿深藏青色单排扣西装内搭白衬衫，无领带，面料为哑光精纺羊毛质感挺括，剪裁合身无任何徽章文字标识。姿态为站立正面朝向镜头，身姿挺拔肩部平稳，双手自然垂放身侧不入镜。表情为沉稳克制的微表情，嘴角轻收，眼神坚定平视镜头具有可信度与专业权威感。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧偏中，左侧留出充足的深色背景区域。背景为专业演播室环境，深灰蓝色渐变背景墙，远处有一条水平的冷白色灯带光晕，整体大幅虚化成深色调，无任何可读文字或标识。光线方案为侧前方 45 度柔光主光塑造面部立体感，主光充足使面部为画面最亮区域，背后加冷白色轮廓光勾勒发丝与肩线形成主体分离，光比 1.5:1，暗部扎实但不压过面部。整体色彩基调为低饱和的深蓝冷调。画质为高端商业演播级人像摄影，锐利有质感。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/04-studio.png\n```\n\n**注意**：深色调容易让模型把面部整体压暗，面部太暗会削弱驱动出的口型细节。prompt 已显式写\"面部为画面最亮区域\"，出图仍偏暗就把光比降到 1.3:1 重出。\n\n西装上的徽章是幻觉重灾区——已写\"无任何徽章文字标识\"，仍要检查胸口和袖口。\n\n---\n\n### 05 · 咖啡厅轻知识\n\n**适用**：软技能、生活方式、副业、个人成长类课程。降低距离感。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 29 岁左右的亚洲女性讲师，气质放松真诚像朋友聊天，妆容极淡近乎素颜，唇色为自然血色，皮肤自然真实可见纹理细节不做过度修饰。发型为黑色微卷及肩发随意自然带一点生活感的凌乱。上身穿浅燕麦色宽松棉质针织衫，面料纹理清晰有自然褶皱，袖口随意挽起。姿态为坐姿正面朝向镜头，背部放松靠在椅背上，双手轻放在桌面下方不入镜。表情为放松的浅笑带真诚的分享感，眼神温和平视镜头。景别为中近景半身像，50mm 镜头，机位略低于视线约 5 度营造平等对话感，人物位于画面左侧三分之一，右侧三分之二留出虚化的环境背景区。背景为温馨的咖啡馆一角，可见浅木色桌面边缘、暖黄色吊灯的模糊光斑、以及窗外的柔和自然光，背景被大光圈虚化成柔和色块，无任何可读文字招牌。光线方案为侧前方大面积窗户自然光作主光柔和漫射，另一侧墙面反光补光，光比 2:1，面部有自然明暗过渡呈现真实环境光感。整体色彩基调为低饱和的暖米调通透舒适。画质为自然光生活摄影质感真实细腻。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/05-cafe.png\n```\n\n**注意**：这是本库唯一**人物在左、留白在右**的配方——轻知识课程的课件通常更少更简，右侧留白放几个关键词就够。要做成满屏课件的课，换配方 11。\n\n咖啡杯是高频幻觉物，如果出图里人物手边出现杯子，检查它有没有挡住下巴。\n\n---\n\n### 06 · 工位实操\n\n**适用**：软件教学、办公技能、设计课、编程入门。讲师与屏幕同框，天然贴合录屏课。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 30 岁左右的亚洲男性职业讲师，气质专业干净务实，短发清爽整齐，戴细金属框眼镜，面部有真实皮肤纹理不做美颜。上身穿浅灰色纯色圆领卫衣，面料质感柔软有自然褶皱，剪裁简洁无任何图案logo文字。姿态为坐姿正面朝向镜头，背部挺直坐在人体工学椅上，双手轻放在桌沿边缘仅露出手腕不遮挡身体。表情为专注平和的微笑，眼神平视镜头有讲解的耐心感。景别为中近景半身像，50mm 镜头，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为虚化的桌面与屏幕区域留白。背景为整洁的现代办公工位，可见桌面上一台侧向摆放的显示器背面轮廓、一个白色马克杯、以及浅灰色墙面，全部大幅虚化成柔和色块，屏幕不朝向镜头不显示任何内容，无任何可读文字。光线方案为正面偏左柔光主光加顶部均匀漫射补光，光比 1.4:1，面部通透明亮眼镜片无强反光遮挡眼睛。整体色彩基调为干净的中性浅灰调。画质为专业职场环境人像摄影，清晰自然。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/06-desk.png\n```\n\n**注意**：**眼镜是驱动的风险项。** 镜片上的反光块会让 omnihuman 判断眼部区域出错，出现眼神呆滞或闪烁。prompt 已写\"镜片无强反光遮挡眼睛\"，出图后放大看眼睛——只要镜片上有一块白，就重出。\n\n不戴眼镜的版本更稳。这条配方删掉\"戴细金属框眼镜\"即可。\n\n---\n\n## B 组 · 学科人设\n\n按学科选。这一组的合规风险高于 A 组，先读每条的\"注意\"。\n\n### 07 · 学术专家\n\n**适用**：需要学术背书的课程（历史、科普、医学科普、法律常识）。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 45 岁左右的亚洲男性学者型讲师，气质沉静博学有书卷气，短发梳理整齐两鬓有明显自然白发，面部有清晰的年龄纹理法令纹与真实皮肤质感，完全不做磨皮美化。上身穿深灰色羊毛西装外套内搭浅蓝色衬衫，面料哑光有织纹，剪裁传统得体，衣领与胸口无任何徽章证书文字标识。姿态为坐姿正面朝向镜头，背部端正微微前倾，双手交叠轻放在桌面上仅露出手腕不入画。表情为平和内敛的浅笑，眼神沉稳温和平视镜头具有学者的可信度。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧三分之一，左侧留出大面积虚化背景。背景为安静的学术书房，身后是深色实木书柜与整齐书籍的模糊轮廓，全部虚化成柔和深色块，书脊与墙面上无任何可读文字或悬挂的证书奖状。光线方案为侧前方柔和窗光作主光，另一侧低强度补光，光比 2:1，面部明暗过渡自然有立体感。整体色彩基调为低饱和的深棕墨绿调沉稳内敛。画质为人文纪实肖像摄影，真实有质感年龄细节丰富。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/07-scholar.png\n```\n\n**注意（合规）**：prompt 里两次写了\"无任何证书奖状徽章\"，**这不是冗余，是硬要求**。模型极爱在学者背后墙上挂几幅证书、在胸口别个徽章，上面的机构名全是编造的。用一个挂着假证书的形象讲课，是虚构资质，平台会判违规。\n\n**白大褂、诊室、实验室不要用**——非持证主体使用医疗形象是明确红线。医学科普课就用这条的普通西装版本。\n\n---\n\n### 08 · 职场导师\n\n**适用**：管理、销售、职业规划、面试辅导类课程。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 36 岁左右的亚洲女性职场导师，气质干练自信有领导力，妆容为精致克制的职业妆，裸粉色唇色，肤质真实自然保留细节。发型为黑色及肩内扣短发打理利落。上身穿米白色西装外套内搭同色系丝质衬衫，面料垂坠有质感，剪裁利落专业，无任何图案文字。姿态为站立正面朝向镜头，肩背挺拔重心平稳，双手自然垂放身侧不入镜。表情为沉着自信的浅笑，眼神明亮平视镜头有说服力与亲和力的平衡。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为虚化的都市办公背景留白。背景为现代写字楼室内空间，可见落地窗的柔和天光、远处模糊的城市天际线轮廓与浅灰色墙面，全部大幅虚化成明亮柔和的色块，无任何可读文字或品牌标识。光线方案为侧前方落地窗自然光作主光柔和明亮，另一侧白墙反光补光，光比 1.5:1，面部通透有立体感。整体色彩基调为高明度低饱和的米白灰调，干净高级。画质为高端商业人像摄影，细节锐利质感真实。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/08-mentor.png\n```\n\n**注意**：落地窗强光容易在面部形成明暗分界。出图后看鼻梁两侧亮度差，超过两档就把光比降到 1.3:1 重出——驱动时明暗分界线会随头部转动出现撕裂感。\n\n---\n\n### 09 · 语言教师\n\n**适用**：英语、日语、小语种、口语陪练类课程。要亲和、明亮、有耐心感。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 27 岁左右的亚洲女性语言教师，气质亲切明朗有耐心感，妆容清透自然的淡妆，珊瑚粉色唇色气色好，皮肤自然真实有健康光泽保留纹理。发型为黑色中长发自然垂落在肩前，发丝清晰有光泽。上身穿浅蓝色棉质衬衫，面料柔软有自然褶皱，剪裁休闲舒适无任何图案文字。姿态为站立正面朝向镜头，肩膀放松自然，双手自然垂放身体两侧不入镜。表情为温暖开朗的微笑露出自然的笑容，眉眼弯起，眼神明亮平视镜头充满鼓励感。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为明亮干净的留白区域。背景为明亮简洁的浅米白色墙面，墙上有一小片虚化的绿植叶影，整体极简通透，无任何可读文字或装饰图案。光线方案为正面偏左大面积柔光主光，右侧反光板补光，光比 1.3:1，面部受光均匀明亮通透，眼中有清晰柔和的眼神光，背景比人物亮半档营造轻盈感。整体色彩基调为高明度的清爽浅蓝米白调。画质为清新自然的商业人像摄影，皮肤质感真实通透。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/09-language.png\n```\n\n**注意**：语言课的口型是内容的一部分（学生要看发音），**这条务必用 1080p 驱动不要降 720p**，且优先用配方 13 的近景机位做发音示范段。\n\n\"露出自然的笑容\"可能出成露齿笑——露齿的底图驱动时口型起始状态不自然。要闭唇笑就把这句改成\"嘴角自然上扬的闭唇微笑\"。\n\n---\n\n### 10 · 技术讲师\n\n**适用**：编程、数据、AI、运维类课程。冷调专业，与代码课件调性一致。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 31 岁左右的亚洲男性技术讲师，气质理性专注不修边幅但干净，短寸黑发，面部有真实的胡茬阴影与皮肤纹理完全不做美颜处理。上身穿深灰色纯色圆领 T 恤外搭黑色薄开衫，面料质感朴素，无任何 logo 图案文字。姿态为坐姿正面朝向镜头，背部微微放松地靠向椅背，双手轻放在桌沿仅露出手腕不遮挡身体。表情为平静专注的微表情，嘴角轻微收拢，眼神沉稳平视镜头有技术人的可信度。景别为中近景半身像，50mm 镜头，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为深色虚化留白区域。背景为极简的深色技术工作台环境，可见深灰色墙面、一条青蓝色氛围灯带的柔和光晕、以及一台侧向显示器的模糊边缘轮廓，屏幕不朝向镜头不显示任何内容，无任何可读文字。光线方案为侧前方 45 度柔光主光，主光充足使面部为画面最亮区域，背后加冷青色轮廓光勾勒发丝肩线形成主体分离，轮廓光不打到面部正面，光比 1.5:1。整体色彩基调为低饱和的冷灰青调，暗部扎实不发灰。画质为科技媒体级人像摄影，锐利有质感。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/10-tech.png\n```\n\n**注意**：冷色轮廓光对驱动是加分项（主体边缘清晰），但**别让彩色光上脸**——prompt 已写\"轮廓光不打到面部正面\"。青光打到脸颊会让口型区域的色彩判断出错。\n\n---\n\n## C 组 · 景别与机位\n\n一门课的三个机位。**从同一张底图派生，不要各自生成。**\n\n### 11 · 右三分之一构图 ⭐ 正文主力\n\n**适用**：全片 90% 的画面。人物在右，左侧三分之二放 PPT、代码、图表。\n\n这条是构图模板，人设部分从 A/B 组任选一条替换。以下用配方 02 的书房人设举例：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 38 岁左右的亚洲男性知识课程讲师，气质儒雅沉稳，短发整齐两鬓有自然白发，面部有真实年龄纹理不做美颜。上身穿深灰蓝色羊毛开衫内搭浅灰圆领衫，面料有织纹质感。姿态为坐姿正面朝向镜头，背部挺直，双手不入镜。表情为平和从容的微笑，眼神温和平视镜头。景别为中近景半身像，50mm 镜头，机位与视线齐平。构图为严格的右三分法：人物身体中轴位于画面从左至右百分之七十五的位置，人物只占据画面右侧三分之一区域，画面左侧三分之二为完全空旷的纯背景区没有任何物体道具，人物头顶距画面上缘留出适度空间。背景为温暖书房的虚化暖棕色调，左侧空旷区为均匀柔和的低对比度背景无任何细节与可读文字，便于后期在其上叠加图文内容。光线方案为侧前方柔和主光加另一侧补光，光比 1.8:1，面部明暗过渡自然，左侧空旷背景区受光均匀明度一致无光斑无阴影。整体色彩基调为低饱和暖棕调。画质为专业人像摄影真实细腻。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/11-third.png\n```\n\n**注意**：**\"百分之七十五\"这个具体数值不要删。** 只写\"人物在右侧\"，模型多半还是给你一个偏右一点的居中构图，留白不够放课件。写死百分比命中率明显更高。\n\n左侧留白区要**明度均匀无光斑**——上面叠白色文字时，背景有明暗变化会让文字某一段看不清。\n\n出图后拿把标尺量一下：人物左边缘到画面左缘的距离，应该占画面宽度的一半以上。不够就重出。\n\n---\n\n### 12 · 全画幅中近景（开场 / 结尾）\n\n**适用**：开场白和结尾总结。没有课件，讲师占据画面主体，建立连接感。\n\n**派生命令**（从配方 11 的底图派生，保住同一张脸）：\n\n```bash\ndlazy gpt-image-2 --images ./lecturer/11-third.png \\\n  --prompt \"保持画面中人物的面部特征发型服装完全一致，只改变构图与机位：人物身体中轴移到画面正中略偏左，人物在画面中的占比放大，景别为中近景半身像画面下缘裁切在胸口，人物头顶留出适度空间，背景保持同样的温暖书房虚化暖棕色调但两侧均衡分布，光线方案与色彩基调完全不变。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/12-full.png\n```\n\n**注意**：带 `--images` 时 `high` 档是 **60 积分**（无参考图是 37）。这是一次性成本，一门课只派生一次。\n\n派生出来后**把 11 和 12 并排看一眼**——如果脸有明显差异，重新派生而不是将就，观众对同一门课里讲师换脸极其敏感。\n\n---\n\n### 13 · 小窗特写（画中画）\n\n**适用**：叠在满屏课件右下角的圆形/圆角小窗。景别更近，小尺寸下仍能看清口型。\n\n```bash\ndlazy gpt-image-2 --images ./lecturer/11-third.png \\\n  --prompt \"保持画面中人物的面部特征发型服装完全一致，只改变景别：改为近景肩上半身像，85mm 中长焦大光圈，人物面部占画面高度约二分之一，人物居中，画面下缘裁切在肩部以下留出充足余量确保下巴与颈部完整不被裁切，背景保持同样色调但进一步虚化为均匀色块，光线与色彩基调完全不变。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/13-inset.png\n```\n\n**注意**：**\"下缘留出充足余量\"是关键。** 这张图后期要被圆形遮罩裁一刀，圆形会切掉四角——如果原图下巴离画面下缘太近，圆形一裁下巴就没了。\n\n不要比这个景别更近。裁到下巴以下不足一个下巴高度时，omnihuman 的下颌运动会穿帮。\n\n---\n\n## D 组 · 课件视觉\n\n这一组不是人像，**没有驱动约束段**，也不需要送去驱动。它们是第 ⑤ 层的静态素材。\n\n**统一原则：图里不要有任何文字。** 模型生成的中文字必然是乱码，英文也经常拼错。**文字一律留到 Remotion 里排**——那里的字才是清晰可控可改的。所有 D 组配方都写了\"无任何文字\"，别删。\n\n### 14 · 章节封面板\n\n**适用**：每章开头的过渡卡。留出标题排版区。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一张极简主义的课程章节封面背景图，画面为大面积的低饱和暖米白色渐变底，左侧三分之二为完全空旷的纯净留白区域没有任何元素，右侧三分之一有一组抽象的几何形状构成的装饰：几个不同大小的圆形与细线条以低对比度的浅灰蓝与浅陶土色叠放，形态克制有秩序感，边缘柔和。整体有细微的纸质颗粒纹理增加质感。构图平衡留白充足，视觉重心偏右，左侧留白区明度均匀一致便于叠加标题文字。画面中没有任何文字数字字母符号。整体色彩基调为低饱和的暖米白与浅陶土的克制配色，不超过三种颜色。画质为高端出版物级别的极简平面设计，干净精致有品味。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./slides/14-chapter.png\n```\n\n**注意**：出图后**逐个角落找文字**。模型在\"设计感\"图片里塞假英文单词的概率很高，一个糊掉的假单词会毁掉整张板的质感。\n\n---\n\n### 15 · 概念示意图\n\n**适用**：抽象概念的视觉隐喻，比干讲有效得多。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一张用于教学讲解的抽象概念示意图，画面中央为一组由细线条连接的几何节点构成的结构图形，节点为大小不一的圆形与方形，线条为均匀的细实线，整体呈现清晰的层级与连接关系，形态简洁克制有逻辑感。配色为深墨蓝色主体搭配琥珀色作为唯一的强调色标出其中一个关键节点，其余为浅灰色。背景为干净的浅米白色纯色底，四周留白充足。画面中没有任何文字数字字母标签。整体风格为高端科普读物的信息图设计，线条精准，视觉层次清晰，不使用任何立体阴影与渐变光效。画质为矢量风格的高清平面插图，边缘锐利干净。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./slides/15-concept.png\n```\n\n**注意**：这条本质是在赌模型的构图直觉，**命中率是本库最低的**，建议 `--batch 4` 起。\n\n真正需要精确结构的示意图（流程图、架构图），不要用生图——用 Remotion 手写 SVG，或者走 `math-explainer-video` 模板。生图适合的是\"感觉对了就行\"的意象图。\n\n---\n\n### 16 · 课程封面\n\n**适用**：课程详情页缩略图、专栏封面。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一张知识付费在线课程的封面背景图，画面为深墨蓝到深青色的低饱和渐变底，右侧三分之一有一组抽象的光影元素：柔和的琥珀色光晕与几条细的对角线条交错，营造出通透的空间纵深感，元素克制不喧宾夺主。左侧三分之二为纯净的深色留白区域，明度均匀一致，便于叠加课程标题与讲师信息。整体有细微的颗粒质感避免数字平涂感。画面中没有任何文字数字字母人物与具象物体。整体色彩基调为深墨蓝配琥珀的高级双色系统，不超过三种颜色。画质为高端商业视觉设计，质感精致有专业感。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./slides/16-cover.png\n```\n\n**注意**：封面是唯一**必须放文字**的地方，但仍然在 Remotion 或设计软件里排——这张图只提供背景。\n\n各平台封面比例不一：小鹅通专栏封面常见 16:9，B 站是 16:10，公众号是 2.35:1。用 4K 16:9 出图再按需裁，比重出省事。\n\n---\n\n## 出图检查清单\n\nA~C 组的每一张，进入驱动前逐项过：\n\n- [ ] 单人，没有第二张脸（背景照片、海报、镜子里的人都算）\n- [ ] 正脸或侧脸 ≤ 20°\n- [ ] 嘴与下巴无遮挡，下巴完整没被裁切\n- [ ] 手不在胸口以上，或干脆不入镜\n- [ ] 光比 ≤ 2:1，面部无斑驳阴影、无硬分界线\n- [ ] 眼镜片上没有反光白块\n- [ ] 画面里没有任何可读文字（书脊、白板、证书、徽章）\n- [ ] 留白区明度均匀，够放课件\n\n任何一项不过就重出。带着一张不合格的底图往下走，后面每一段驱动的积分都是白花的。\n\nFile v1.0.18:skill-card.md\n\n## Description:\n\nGuides creators through making landscape course videos with a consistent digital lecturer, reusable portrait recipes, narration, slides, and a cost-conscious production workflow.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCourse creators, educators, and training teams use this skill to plan and produce paid lessons, internal training, or knowledge-sharing videos with a recurring digital lecturer and slide-led instruction.\n\n### Deployment Geography for Use:\n\nGlobal (Chinese-language workflow with China-focused compliance guidance)\n\n## Known Risks and Mitigations:\n\nRisk: Course materials, prompts, images, and audio may be sent to dLazy services.\n\nMitigation: Confirm permissions and data-sharing requirements before submitting selected materials to the third-party CLI.\n\nRisk: Media generation consumes paid credits, especially for digital-lecturer footage.\n\nMitigation: Review the proposed workflow and current costs before generation, and limit lecturer footage to necessary segments.\n\nRisk: Course claims or lecturer credentials may be misleading or noncompliant.\n\nMitigation: Review educational claims and credentials before publication, including the skill's China-focused compliance guidance.\n\n## Reference(s):\n\n- [Course Avatar skill release](https://clawhub.ai/dlazyai/skills/dlazy-course-avatar)\n- [dLazy](https://dlazy.com)\n- [Production pipeline](pipeline.md)\n- [Portrait and slide recipes](recipes.md)\n- [Troubleshooting and compliance](troubleshooting.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration instructions]\n\n**Output Format:** [Markdown with command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guidance for producing scripts, portraits, audio, slides, and course-video clips; final video assembly requires a separate tool.]\n\n## Skill Version(s):\n\n1.0.18 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.18:troubleshooting.md\n\n# 排错与合规\n\n## 驱动失败对照表\n\n讲师\"不对劲\"时，**先回头看底图**，90% 的问题在那一步就注定了。\n\n| 症状 | 真因 | 修法 |\n|---|---|---|\n| 嘴型飘、对不上音 | 底图侧脸角度过大 | 重出底图，正脸或侧脸 ≤ 20° |\n| 嘴部糊成一团 | 面部像素太少 | 换近一档景别；语言课务必用 1080p |\n| 眼神呆滞或闪烁 | **底图眼镜片上有反光白块** | 重出，或直接去掉眼镜 |\n| 下巴穿帮、脖子扭曲 | 底图下巴被裁切 | 底图必须完整露出下巴与颈部 |\n| 手部出现鬼影 | 底图里手在胸口以上 | 手放桌沿以下，或不入镜 |\n| 驱动到了错误的人 | 底图有第二张脸（背景海报、照片） | 背景不能有任何人脸 |\n| 面部忽明忽暗 | 底图有斑驳阴影（百叶窗、树影） | 补光消除斑驳，或换纯色背景 |\n| 表情僵硬像蜡像 | 底图过度磨皮，失去皮肤纹理 | prompt 加\"真实皮肤纹理，不做过度磨皮\" |\n| 叠上课件后文字看不清 | **底图留白区有明暗变化或光斑** | 重出，留白区要明度均匀 |\n| 圆形小窗裁掉了下巴 | 底图下缘余量不足 | 用配方 13，下缘留足余量 |\n\n后三条是课程版特有的，带货版不会遇到。\n\n## 报错对照表\n\n| Code | 含义 | 处理 |\n|---|---|---|\n| 400 | 参数非法 | 多半是尺寸写法错了或 prompt 超上限，见下 |\n| 401 | `unauthorized` | `dlazy login` 或 `dlazy auth set <key>` |\n| 501 | 缺必填参数 | `error: required option '--prompt' not specified` |\n| 502 | 本地文件读不到 | 检查路径，Windows 下注意反斜杠转义 |\n| 503 | `insufficient_balance` | 充值：https://dlazy.com/dashboard/organization/settings?tab=credits |\n| 504 | 异步任务失败 | 看 `=== Generation Failed ===` 后面的真实原因 |\n\n### 400 最常见的三种\n\n**横竖屏写反了。** 课程版最高频的错误：\n\n```\n✅ --size 3840x2160    横屏 16:9 4K\n❌ --size 2160x3840    竖屏 9:16（这是带货版的）\n```\n\n**写反不会报错**——两个都是合法枚举值。你会拿到一张竖图，然后在装配那一步才发现，中间的驱动积分已经花掉了。从带货技能复制命令过来时，这一处必须改。\n\n`1536x1024` 是 **3:2 不是 16:9**，做课程封面会被平台裁掉两边。\n\n**提示词超上限。** 整次请求被拒，不是截断，积分不退：\n\n| 上限 | 模型 |\n|---|---|\n| 300 | `jimeng-omnihuman-1.5`（且可选） |\n| 500 | `seedream-5.0` 全系、`jimeng-t2i` |\n| 512 | `qwen-tts` |\n| 1300 | `qwen-image-2-pro` |\n| 2000 | `gpt-image-2`、`banana-pro`、`banana2` |\n\n正文段写满 512 是本技能推荐的省钱做法，**但别写超**。留 10 字符余量，标点也算字符。\n\n**尺寸写法串了模型。** 六种互不通用：\n\n```\ngpt-image-2      --size 3840x2160        （像素，用 x，固定枚举）\nqwen-image-2-pro --size 2688*1536        （像素，用 *）\nseedream-5.0     --size 16:9 --resolution 4k\nbanana-pro       --aspectRatio 16:9 --imageSize 4K   （驼峰）\nseedance-2.5     --ratio 16:9 --resolution 1080p\nkling-v3         --aspect_ratio 16:9     （下划线）\n```\n\n**音频超时长上限。** `jimeng-omnihuman-1.5`：1080p ≤ 30 秒，720p ≤ 60 秒。超了直接拒。正文段的长音频**不要送进驱动**——它们本来就不该驱动。\n\n## 中文 prompt 的编码陷阱（重要）\n\n**最隐蔽也最贵的坑。** 症状：命令返回 `ok: true`，但出来的图跟 prompt 毫无关系——通常是一张\"通用美女写真\"，你要的书房、白板、留白区全部被无视。\n\n原因不是模型跑偏，是 **prompt 在传到 API 之前就被编码破坏成乱码了**。模型收到乱码，只能靠残存字节碎片自由发挥，回落到训练集里最高频的人像模板。\n\n最常见的触发方式是在 Windows 上用脚本拼命令行：\n\n```bash\n# ❌ 危险：Python 在 Windows 下 stdout 默认走 GBK，\n#         bash 按 UTF-8 读，中文全变乱码，且不报任何错\nP=$(python -c \"print(open('prompt.txt',encoding='utf-8').read())\")\ndlazy gpt-image-2 --prompt \"$P\" ...\n```\n\n**正确做法：用 `--input` 传 UTF-8 的 JSON 文件，让 prompt 不经过 shell。**\n\n```bash\ncat > payload.json <<'EOF'\n{\"prompt\": \"一位 38 岁左右的亚洲男性知识课程讲师...\", \"size\": \"3840x2160\", \"quality\": \"high\", \"imageFormat\": \"png\"}\nEOF\ndlazy gpt-image-2 --input @payload.json --save ./lecturer/base.png\n```\n\n`--input` 每个工具都支持，flag 值可以和 JSON 混用（flag 优先）。**课程是批量生产，一律走这条路。**\n\n**自检方法**：出图明显跑偏时，先别改 prompt——把同一段中文直接内联到命令行手动跑一次。内联能出对图、脚本出错图，就是编码问题，不是提示词问题。\n\n乱码 prompt 也可能触发 `safety_violations=[sexual]`，因为破碎的字节序列会被安全分类器误判。看到这个错误先查编码，再怀疑用词。\n\n## 长课程批处理陷阱\n\n一节课十几段、一门课几十节，这些问题带货版（单条 3 段）根本遇不到。\n\n**1. 文件名用两位数补零。**\n\n```\n❌ body1 body2 ... body10 body11     字典序排成 body1, body10, body11, body2\n✅ body01 body02 ... body10 body11   顺序正确\n```\n\n`ffmpeg -i` 的顺序、`for f in *.mp4` 的展开顺序都按字典序。**一节课的章节被打乱顺序而你没发现**，是这条流水线最尴尬的失败方式。\n\n**2. 时长会累积漂移。**\n\n带货版实测：omnihuman 成片比输入音频长 **0.1~0.2 秒**。单段无所谓，但一节课 8 段露脸累积下来是 **0.8~1.6 秒**。\n\n如果你的字幕时间轴是按讲稿字数估算的，**到片尾会明显对不上**。两个解法：\n\n- 装配前用 `ffprobe` 读每段的**实际时长**，用实测值排时间轴，不要用估算值\n- 或者让 `file-to-video` 模板处理字幕，它按真实素材时长对齐\n\n```bash\nfor f in clips/*.mp4; do\n  echo -n \"$f \"; ffprobe -v error -show_entries format=duration -of csv=p=0 \"$f\"\ndone\n```\n\n**3. 断点续跑。**\n\n十几次驱动调用，跑到第 9 段失败，不该从头再来（前 8 段的积分已经花了）。脚本里加存在性判断：\n\n```bash\nfor seg in trans1 trans2 trans3 trans4 trans5 trans6; do\n  [ -f \"./clips/$seg.mp4\" ] && { echo \"skip $seg\"; continue; }\n  dlazy jimeng-omnihuman-1.5 --images ./lecturer/11-third.png \\\n    --audio ./audio/$seg.wav --input @payload/drive.json \\\n    --resolution 720p --save ./clips/$seg.mp4\ndone\n```\n\n**4. 跨节次的一致性漂移。**\n\n一门课录到第 12 节，你可能已经忘了当初用的是哪个音色、哪张底图。**开课时就把这几项写进项目根目录的配置文件**，每节课从它读：\n\n```json\n{\n  \"lecturer_base\": \"./lecturer/11-third.png\",\n  \"lecturer_full\": \"./lecturer/12-full.png\",\n  \"voice\": \"Ethan\",\n  \"drive_prompt\": \"人物自然讲解，幅度克制，偶尔轻微点头，身体基本不动\",\n  \"resolution_talk\": \"1080p\",\n  \"resolution_trans\": \"720p\"\n}\n```\n\n底图文件**要备份**。丢了就再也回不到同一张脸，整门课的形象断档。\n\n## 省积分策略\n\n按性价比排序：\n\n1. **砍露脸时长。** 驱动占 95%。这是唯一数量级的杠杆——串行形态比全程画中画省 10 倍，细节见 `pipeline.md` 开头。\n2. **转场段降 720p。** 15 积分/秒 vs 23，省 35%。转场只有 10 秒且景别偏侧，观众看不出。开场结尾留 1080p。\n3. **正文 TTS 写满 512 字符。** 固定 6 积分/次，写满是 10 次调用，切碎是 38 次，白花 168 积分。\n4. **底图整门课复用。** 157 积分摊到 30 节，每节 5 积分。\n5. **章节转场卡替代部分露脸。** 六次转场留三次露脸，其余用纯课件动画。\n6. **先 `--dry-run`。** 一节课十几次调用，参数写错一个字母就是几百积分。\n\n**不要在底图上省。** 底图差 → 驱动失败 → 整节课重跑。这笔账永远不划算。\n\n## 教培合规红线\n\n**这一套跟带货完全不同，别把带货版的合规清单套过来。** 教育培训广告受《广告法》第二十四条专门规制，比一般商品广告严得多。\n\n**四条硬禁止**（第二十四条）：\n\n1. **不得对升学、通过考试、获得学位学历或合格证书作保证性承诺**，也不得对培训效果作明示或暗示的保证。\n   - 禁：「包过」「保过」「一次上岸」「学完必会」「通过率 98%」「不过退费」（作为效果承诺时）\n2. **不得明示或暗示有考试机构、其工作人员、命题人员参与培训。**\n   - 禁：「命题组老师授课」「内部押题」「考试院背景」\n3. **不得利用科研单位、学术机构、教育机构、行业协会、专业人士、受益者的名义或形象作推荐、证明。**\n   - 这条对数字人**尤其致命**：用数字人扮演\"往期学员\"讲述学习效果，是用受益者形象作证明，**同时还是虚构的**，双重违规。\n   - 学员证言、前后成绩对比、\"我用了三个月从 60 分到 130 分\"——全部禁止。\n4. **虚构师资与资质。** 数字人讲师不得被包装成\"某某大学教授\"「二十年教龄名师」等未经证实的身份。`recipes.md` 配方 07 反复强调\"无任何证书奖状徽章\"就是为此——模型会自己编造机构名挂在墙上。\n\n**视觉红线**：\n\n- 白大褂、诊室、实验室 → 非持证主体禁用\n- 证书、奖状、胸牌、机构 logo → 出图后逐项检查并删除，模型编造的机构名是虚构资质\n- 背景里的可读文字 → 所有配方都写了\"无任何可读文字\"，别删这句\n\n**面向未成年人的额外限制**：学科类校外培训的广告投放在多地有专门限制，面向学龄前儿童的线上培训被明确禁止。做 K12 内容前先确认当地现行规定，这块政策变动频繁。\n\n**AI 生成内容标识**：我国已施行 AI 生成合成内容标识要求，数字人讲师视频属于典型的 AI 生成合成内容。发布时按平台要求勾选「内容由 AI 生成」，抖音、快手、B 站、视频号均有对应开关。付费课程还建议在课程介绍页显性说明讲师形象为 AI 生成——**这既是合规要求，也能避免学员事后以\"虚假宣传\"投诉退款**。\n\n法规会变，上面是写作时的通行理解，**不构成法律意见**。正式商用前请让法务过一遍课程文案。\n\n## 什么时候不该用数字人\n\n诚实地说，这几种情况真人出镜更好：\n\n- **需要演示操作的课**——数字人只能说话，不能拿教具、不能写板书、不能操作软件。软件课直接录屏 + 配音，比数字人合适得多。\n- **强人格 IP 的课**——知识付费的溢价很大程度来自\"这个人\"。老师本人有影响力时，数字人是在稀释资产。\n- **需要即时互动的直播课**——数字人是预渲染的，答不了问。\n- **已有真人素材、只是要换语言**——直接用 `videoretalk` 或 `sync-lipsync-3` 做口型替换，不需要重造一个人。\n\n数字人的真正优势是**批量与一致性**：一门课几十节，同一个形象、同一个音色、随时可改稿重出，不用约老师档期、不用重打光、改一句话不用重录一整节。用在这个场景上才划算。\n\n课程内容的价值在于讲得对不对、清不清楚——**这件事数字人帮不上忙，讲稿才是**。把省下的时间花在 ② 上。\n\nArchive v1.0.17: 6 files, 33767 bytes\n\nFiles: pipeline.md (16592b), recipes.md (31651b), skill-card.md (2162b), SKILL.md (11164b), troubleshooting.md (11508b), _meta.json (139b)\n\nFile v1.0.17:SKILL.md\n\n---\nname: dlazy-course-avatar\nversion: 1.0.0\ndescription: Knowledge-course / online-teaching avatar lecturer — 16 landscape base-portrait recipes plus the slide-first pipeline that keeps a 20-minute lesson under 3000 credits. Use when the user wants a digital human to teach a paid course, a training module or a knowledge-sharing video on platforms like Xiaoetong, Tencent Classroom, Bilibili, YouTube or an internal LMS.\nmetadata: {\"clawdbot\":{\"emoji\":\"🎓\",\"requires\":{\"bins\":[\"npm\",\"npx\"],\"env.optional\":[\"DLAZY_API_KEY\"]},\"install\":\"npm install -g @dlazy/cli@1.2.3\",\"installAlternative\":\"npx @dlazy/cli@1.2.3\",\"homepage\":\"https://dlazy.com\",\"configLocation\":\"~/.dlazy/config.json\",\"apiEndpoints\":[\"api.dlazy.com\",\"files.dlazy.com\"]},\"openclaw\":{\"systemPrompt\":\"When invoking this skill, read the 露脸预算 section of SKILL.md before quoting any cost, and read recipes.md before writing any base-portrait prompt. Run `dlazy <model> -h` to confirm current flags before building a command.\"}}\n---\n\n# 知识付费讲师数字人\n\n课程视频跟带货视频最大的不同：**观众来看的不是你的脸，是你屏幕上的东西。**\n\n这句话不是审美判断，是成本判断。`jimeng-omnihuman-1.5` 按音频秒数计费，1080p 是 **23 积分/秒**。一节 20 分钟的课全程用数字人驱动：\n\n```\n1200 秒 × 23 = 27600 积分（驱动）\n```\n\n而同样一节课，讲师只在开场、章节转场、结尾露脸（约 110 秒），其余画面是课件 + 配音：\n\n```\n110 秒 × 23 = 2530 积分（驱动）  ——  省掉 90.8%\n```\n\n算上配音，两条路线的**全成本**是 2640 对 27840，详见下面的\"露脸预算\"。\n\n**省下的 25000 积分不是靠妥协换来的，成片反而更像一门正经的课。** 全程一张脸对着你讲 20 分钟，是知识付费里完播率最差的形态之一。\n\n所以这个技能的核心不是\"怎么把数字人做得更真\"，而是**怎么把数字人用在该用的 110 秒上**，剩下的交给课件。底图配方解决前者，露脸预算解决后者。\n\n## 何时使用\n\n- 做小鹅通 / 腾讯课堂 / 知识星球 / B 站 / YouTube 的付费课或公开课\n- 企业内训、SOP 培训、新员工入职课程\n- 一门课几十节，需要**同一个讲师形象跨集稳定复用**\n- 已有 PPT / 讲义 / 文档，想变成有讲师出镜的课程视频\n- 真人讲师没时间录制，或需要多语言版本\n\n不适用于：单条知识口播短视频（用 `dlazy-short-video`，竖屏逻辑不同）、纯课件无讲师的文档转视频（直接 `dlazy chat --skill file-to-video`）、数学公式推导动画（那是 `math-explainer-video` 模板的活）。\n\n## 与带货版的根本差异\n\n如果你用过 `dlazy-ecommerce-avatar`，这五处是**不能照搬**的：\n\n| | 带货 | 课程 |\n|---|---|---|\n| 画幅 | 竖屏 9:16 | **横屏 16:9** |\n| 构图 | 人物居中 | **人物偏侧，留出内容区** |\n| 露脸 | 全程 | **只在开场/转场/结尾** |\n| 单集时长 | 30~60 秒 | **8~40 分钟**（要切几十段） |\n| 合规红线 | 广告法第九条（绝对化、疗效） | **广告法第二十四条**（升学承诺、通过率、资质） |\n\n尺寸参数尤其容易串。带货是 `--size 2160x3840`，课程是 `--size 3840x2160`——写反了不报错，出一张竖图，然后你会在装配那一步才发现。\n\n## 五条硬约束\n\n**1. 横屏直接上 4K，不额外花钱。**\n\n`gpt-image-2` 的计费**只看 `--quality` 和有没有参考图，完全不看 `--size`**（源码核对：`config/models/gpt-image-2.ts` 的 `costs`）。所以：\n\n```\n--size 2048x1152 --quality high   →  37 积分\n--size 3840x2160 --quality high   →  37 积分   ← 同价，直接用这个\n```\n\n横屏的 16:9 有两档（`2048x1152` / `3840x2160`），**竖屏只有 4K 一档**（`2160x3840`）。既然同价，中等档只在你需要小文件时才有意义。\n\n注意 `1536x1024` 是 **3:2 不是 16:9**，拿去做课程封面会被平台裁掉两边。\n\n**2. 底图要给内容留位置。**\n\n课程画面的左侧（或右侧）三分之二要放 PPT、板书、代码、图表。讲师站在剩下的三分之一里。\n\n这意味着底图**不能居中构图**——居中的人像叠上课件，要么挡内容，要么只能缩成一个小圆窗浪费掉整张 4K。配方 11 是为此专门写的，课程主力就用它。\n\n反过来，开场白和结尾这两段没有课件，用配方 12 的全画幅中近景，视觉上形成\"打招呼 → 讲内容 → 总结\"的节奏。\n\n**3. 一门课的底图必须一次定死。**\n\n带货可以每条视频换个人设，课程不行。第 3 节的讲师换了件衣服，观众立刻出戏。\n\n**开课前把底图存成文件，之后几十节全部引用同一个文件。** 不要指望同一段 prompt 能复现同一张脸——两次采样出的不是一个人。详见\"保持同一张脸\"。\n\n**4. 时长是硬上限，一节课要切几十段。**\n\n`jimeng-omnihuman-1.5` 的音频上限：**1080p ≤ 30 秒，720p ≤ 60 秒**。\n\n按每秒 4.5 字算（实测 `qwen-tts` 为 4.54~4.71 字/秒），30 秒 ≈ 130 字。而 `qwen-tts` 自己的 prompt 上限是 **512 字符**——中文一个字算一个字符，加标点后 130 字很安全。\n\n写讲稿时就**按 110~130 字一段切好**，别写完 20 分钟才回头切，语气会断。\n\n**5. 中文 prompt 走 `--input` JSON 文件。**\n\n用 shell 变量拼中文，在 Windows 上会静默变乱码——命令照样返回 `ok: true`，但出图跟 prompt 毫无关系。批量生产一律：\n\n```bash\ndlazy gpt-image-2 --input @payload.json --save ./lecturer/base.png\n```\n\n详见 `troubleshooting.md` 的\"编码陷阱\"。不确定参数时先 `--dry-run`，打印载荷和积分预估，不出图不扣分。\n\n## 露脸预算\n\n这是本技能最该记住的一张表。以一节 **20 分钟**的课为例：\n\n| 段落 | 时长 | 画面 | 驱动 | TTS | 小计 |\n|---|---|---|---|---|---|\n| 开场白 | 30 秒 | 讲师全画幅 | 690 | 6 | 696 |\n| 章节转场 × 6 | 各 10 秒 | 讲师偏侧 + 章节标题 | 1380 | 36 | 1416 |\n| 正文讲解 | 18 分钟 | **课件 + 配音，无讲师** | 0 | 60 | 60 |\n| 结尾总结 | 20 秒 | 讲师全画幅 | 460 | 6 | 466 |\n| 合计 | 20 分钟 | | 2530 | 108 | **约 2640** |\n\n对照全程驱动的 27840 积分（27600 驱动 + 240 TTS）。**同一节课，差 10 倍以上。**\n\n正文那 18 分钟只要 60 积分，是因为 **`qwen-tts` 固定 6 积分一次，与字数无关**（源码核对：`costs` 直接 `return 6`）。由此得到一条不显然的优化：\n\n> **正文段不做驱动，不受 30 秒时长限制，所以每次调用应该把 512 字符写满。**\n\n写满是 10 次调用 60 积分；如果沿用露脸段那种 130 字一段的切法，同样的内容要 38 次调用 228 积分。**白花 168 积分买了同一段音频。** 露脸段受驱动的 30 秒上限约束只能切短，正文段没有这个约束——两者的切法必须分开。\n\n想再省，两个杠杆：\n\n- **降到 720p**：15 积分/秒，再省 35%。讲师小窗在 720p 下完全够用——它在成片里只占画面的六分之一，观众看不出差别。全画幅的开场结尾建议留在 1080p。\n- **章节转场用静态卡**：把 6 次转场里的一半换成纯课件动画，只保留关键章节露脸，再省 700 左右。\n\n**不要省的地方是底图那 37 积分。** 一张底图要服务几十节课，摊下来趋近于零；底图不合格导致驱动失败，一次就是几百上千积分。\n\n## 流水线\n\n```\n① 底图     gpt-image-2 (2000字) / seedream-5.0 (500字)   ← 提示词杠杆全在这\n② 讲稿     claude-sonnet-5 / qwen3.8-max                  ← 按 110~130 字/段切好\n③ 配音     qwen-tts (512字符上限) / doubao-tts            ← 全课必须同一音色\n④ 驱动     jimeng-omnihuman-1.5 (300字, ≤30秒@1080p)      ← 只做露脸段；单点依赖\n⑤ 课件     Remotion 模板 / gpt-image-2 出静态板           ← 正文主体在这\n⑥ 装配     dlazy chat --skill file-to-video               ← CLI 本身不做合成\n```\n\n**CLI 没有视频合成能力。** `dlazy` 是模型调用器，没有 merge / concat 命令。要交付 mp4，最后一步必须走沙箱模板或你自己的 ffmpeg。\n\n**④ 是单点依赖。** 5 个数字人模型里只有 `jimeng-omnihuman-1.5` 吃「静态图 + 音频」，其余四个都要「现成的说话视频 + 音频」才能换口型。它一挂整条链路就断，降级成本翻倍。\n\n**⑤ 是课程版真正的主战场。** 带货版这一层只是插几个产品空镜，课程版这一层是全片 90% 的画面。`file-to-video` 模板能把 PPT / Word / PDF 直接解析成带旁白和字幕的课件视频，讲师片段作为素材叠进去。完整命令见 `pipeline.md`。\n\n## 配方索引\n\n`recipes.md` 里有 16 条配方，参数全部经源码核对，可直接粘贴执行。\n\n| 组 | 配方 | 适用 |\n|---|---|---|\n| A 讲台场景 | 01 纯色抠像位 / 02 书房 / 03 教室白板 / 04 演播室 / 05 咖啡厅 / 06 工位实操 | 按课程调性选一条 |\n| B 学科人设 | 07 学术专家 / 08 职场导师 / 09 语言教师 / 10 技术讲师 | 按学科选，注意 07 的资质合规 |\n| C 景别机位 | 11 **右三分之一构图** / 12 全画幅中近景 / 13 小窗特写 | 11 是正文主力，12 开场结尾，13 画中画 |\n| D 课件视觉 | 14 章节封面板 / 15 概念示意图 / 16 课程封面 | 第 ⑤ 层的静态素材 |\n\n选不动就用 **配方 11 + 配方 12 这一对**：11 出正文用的偏侧构图，12 出开场结尾用的全画幅，同一人设两个机位，一门课就够了。\n\n## 保持同一张脸\n\n一门课几十节，人设一致性是刚需。三种做法，从稳到弱：\n\n1. **存图复用**（唯一推荐）——第一次满意后把底图存成文件，全课引用同一个文件，脸 100% 一致\n2. **参考图重绘**——`gpt-image-2 --images base.png --prompt \"同一人物，换成...\"`，能换背景保住脸，但**积分从 37 涨到 60**（有参考图时 high 档计费不同），且跨集微妙差异会累积\n3. **纯文字复现**——不要用。同样的 prompt 两次出的脸不是一个人\n\n配方 11 / 12 / 13 是同一人设的三个机位，**必须用做法 2 从同一张底图派生**，不要各自独立生成——否则三个机位是三个人。\n\n## 认证\n\n```bash\ndlazy login          # 设备码流程，自动保存 key\ndlazy auth set KEY   # 已有 key 时直接写入\n```\n\nKey 从 https://dlazy.com/dashboard/organization/api-key 获取，保存在 `~/.dlazy/config.json`。也可用 `DLAZY_API_KEY` 环境变量按次传入。\n\n积分不足返回 `insufficient_balance`，充值入口：https://dlazy.com/dashboard/organization/settings?tab=credits\n\n## Reference Map\n\n| 文件 | 内容 |\n|---|---|\n| `recipes.md` | 16 条底图与课件配方，完整可执行命令 + 每条的驱动注意事项 |\n| `pipeline.md` | ①~⑥ 逐步命令，含分段批处理、画中画合成、成本估算 |\n| `troubleshooting.md` | 驱动失败对照表、长课程批处理陷阱、教培合规红线 |\n\nFile v1.0.17:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"dlazy-course-avatar\",\n  \"version\": \"1.0.17\",\n  \"publishedAt\": 1791421373755\n}\n\nFile v1.0.17:pipeline.md\n\n# 完整流水线 · 从讲义到成片\n\n以\"一节 20 分钟横屏课程\"为例，逐步给出可执行命令。\n\n## 先定成片形态\n\n动手前先定这个，它决定了成本量级，改起来要重做。\n\n**A. 串行（推荐）** —— 讲师段与课件段前后接续，同一时刻只有一种画面：\n\n```\n[讲师 开场 30s] → [课件 正文] → [讲师 转场 10s] → [课件 正文] → … → [讲师 结尾 20s]\n```\n\n讲师只需驱动 110 秒 ≈ **2640 积分**。这是知识付费最主流的形态，也是本技能的默认路线。\n\n**B. 全程画中画** —— 课件铺满，讲师小窗常驻右下角：\n\n讲师要驱动满 1200 秒 ≈ **27840 积分**。**10 倍成本**，换来的只是一个六分之一大小的常驻人头。除非甲方明确要求，否则不值。\n\n**C. 局部画中画（折中）** —— 串行为主，只在 2~3 个关键讲解点让小窗出现 30 秒：\n\n比 A 多花约 2000 积分，换来\"讲师一直在场\"的感觉。做企业内训、需要强讲师存在感时用这条。\n\n下面按 **A** 展开，⑥ 里给出画中画的合成命令（C 用得上）。\n\n## 成本结构\n\n| 步骤 | 命令 | 积分 |\n|---|---|---|\n| ① 底图 | `gpt-image-2 --quality high` | 37（一门课一次） |\n| ① 派生机位 | `gpt-image-2 --images` | 60 × 2（一门课一次） |\n| ② 讲稿 | `claude-sonnet-5` | 个位数 |\n| ③ 配音 | `qwen-tts` **固定 6 积分/次** | 约 108 |\n| ④ **驱动** | `jimeng-omnihuman-1.5` 1080p × 110 秒 | **2530** |\n| ⑤ 课件 | `gpt-image-2` 静态板 × N | 37 × N |\n| ⑥ 装配 | 沙箱模板 / 自己 ffmpeg | — |\n| 单节合计 | | **约 2650** |\n\n底图那 157 积分（37 + 60×2）是**整门课一次性**的，摊到 30 节上每节 5 积分。\n\n**驱动占 95%。** 所以省钱只有一个方向：**砍露脸时长**，不是砍画质。\n\n## ① 底图\n\n从 `recipes.md` 选一条，先出正文主力机位（配方 11），再派生另外两个机位：\n\n```bash\n# 主力机位：右三分之一构图，左侧留给课件\ndlazy gpt-image-2 --input @payload/base.json --batch 4 --save ./lecturer/11-third.png\n\n# 从它派生开场/结尾用的全画幅（保住同一张脸）\ndlazy gpt-image-2 --images ./lecturer/11-third.png --input @payload/derive-full.json \\\n  --save ./lecturer/12-full.png\n```\n\n`--batch 4` 并行出 4 张选一张（积分 ×4 = 148）。**人脸一次难中，这个钱值得花一次**——选定后这张脸要用几十节课。\n\n出图后按 `recipes.md` 末尾的检查清单逐项过再往下走。带着一张不合格的底图，后面每一节课的驱动积分都是白花的。\n\n## ② 讲稿\n\n**关键：露脸段和正文段用两种切法。** 这是课程版最容易做错的一步。\n\n| | 切法 | 为什么 |\n|---|---|---|\n| 露脸段 | **110~130 字一段** | 受 omnihuman 的 30 秒硬上限约束 |\n| 正文段 | **写满 500 字符** | 不驱动，无时长约束；TTS 固定 6 积分/次，写满省钱 |\n\n中文口播约 **每秒 4.5 字**（实测 `qwen-tts` 为 4.54~4.71 字/秒），130 字 ≈ 29 秒，卡在 30 秒上限内安全。\n\n```bash\ndlazy claude-sonnet-5 --prompt \"为这门课的第 3 节写讲稿。\n主题：<本节主题>\n时长：20 分钟，共 6 个章节\n输出三类文本，用 === 分隔：\n1. 开场白：110 字以内，抛出本节要解决的问题，不要自我介绍和寒暄\n2. 章节转场 × 6：每条 45 字以内，承上启下，点出下一章要讲什么\n3. 正文讲解 × 6：每章一段，每段严格控制在 480 字以内（含标点），\n   语言口语化可直接朗读，有具体例子和数字，避免书面语和排比句\n4. 结尾总结：90 字以内，收束要点并给出下一节的钩子\n合规要求：不得出现升学率、通过率、保过、包会等承诺性表述，\n不得虚构任何机构背书、职称或从业资质\n输出纯文本，不要任何解释\"\n```\n\n最后那条合规要求是硬线，别删——原因见 `troubleshooting.md` 的\"教培合规红线\"。\n\n## ③ 配音\n\n`qwen-tts` 的 prompt **上限 512 字符，超出整次请求 400，积分不退**。\n\n`qwen-tts` 的输出是 **WAV 不是 MP3**（响应 URL 后缀为 `.wav`，文件头为 `RIFF/WAVE`）。`--save` 只决定本地文件名，不做转码——存成 `.mp3` 会得到一个扩展名骗人的 WAV 文件，第 ⑥ 步 ffmpeg 装配时按扩展名推断格式就会出错。**存成 `.wav`。**\n\n\n```bash\n# 露脸段（短，受驱动时长约束）\ndlazy qwen-tts --input @payload/tts-open.json  --save ./audio/open.wav\ndlazy qwen-tts --input @payload/tts-trans1.json --save ./audio/trans1.wav\n\n# 正文段（写满 500 字符，一次调用顶四次）\ndlazy qwen-tts --input @payload/tts-body1.json --save ./audio/body1.wav\n```\n\n`payload/tts-open.json` 形如：\n\n```json\n{ \"prompt\": \"<文本>\", \"voice\": \"Cherry\" }\n```\n\n音色选择：\n\n- `--voice Cherry`（默认，年轻女声）\n- `--voice Serena` / `Vivian`（成熟女声，适合人文、管理类）\n- `--voice Ethan` / `Ryan`（男声，适合技术、商业类）\n- 全部系统音色见 `dlazy qwen-tts -h`\n\n要更贴合人设的声音，用设计模式自然语言描述：\n\n```bash\ndlazy qwen-tts --generation_mode design \\\n  --voice_prompt \"40岁男性，语速平稳偏慢，讲课语气，重点处有自然停顿，不夸张\" \\\n  --prompt \"<文本>\" --save ./audio/open.wav\n```\n\n**整门课必须用同一个音色。** 不只是同一节课——第 5 节换了声音，等于换了老师。把音色 id 写进项目配置文件，别靠记忆。\n\n课程配音比带货要**慢**。带货求煽动，课程求听得清。设计模式里写\"语速平稳偏慢\"比默认语速更适合教学。\n\n## ④ 驱动\n\n**只驱动露脸段。** 正文段没有讲师画面，跳过这一步——这就是省下 90% 积分的地方。\n\n**这一步是单点依赖。** dLazy 有 5 个数字人相关模型，只有 `jimeng-omnihuman-1.5` 接受「静态图 + 音频」：\n\n| 模型 | 输入 | 能否用底图驱动 |\n|---|---|---|\n| `jimeng-omnihuman-1.5` | `--images` + `--audio` | ✅ 唯一 |\n| `videoretalk` | `--video_url` + `--audio_url` | ❌ 要现成视频 |\n| `sync-lipsync-3` | `--video_url` + `--audio_url` | ❌ 要现成视频 |\n| `heygen-lipsync-speed` | `--video_url` + `--audio_url` | ❌ 要现成视频 |\n| `jimeng-dream-actor` | `--images` + `--videos` | ❌ 动作迁移，不吃音频 |\n\n它一挂整条链路就断。降级路径是「i2v 生成说话视频 → videoretalk 对口型」，成本翻倍，能走主路径就别走。\n\n```bash\n# 开场：全画幅机位\ndlazy jimeng-omnihuman-1.5 \\\n  --images ./lecturer/12-full.png \\\n  --audio ./audio/open.wav \\\n  --input @payload/drive.json \\\n  --resolution 1080p \\\n  --save ./clips/open.mp4\n\n# 章节转场：偏侧机位，可降 720p 省钱\ndlazy jimeng-omnihuman-1.5 \\\n  --images ./lecturer/11-third.png \\\n  --audio ./audio/trans1.wav \\\n  --input @payload/drive.json \\\n  --resolution 720p \\\n  --save ./clips/trans1.mp4\n```\n\n`--prompt` 上限 **300 字符且可选**（`payload/drive.json` 里就一行）。它控制的是**运镜与动作幅度**，不是画面内容——画面已被底图定死。课程场景的有效写法：\n\n| 想要 | 写法 |\n|---|---|\n| 讲课标准态 | `人物自然讲解，幅度克制，偶尔轻微点头，身体基本不动` |\n| 开场问候 | `人物微笑讲话，开场有轻微的点头示意，表情自然亲和` |\n| 强调重点 | `人物讲解语气加重时头部小幅前倾，眼神专注` |\n\n**不要写**画面描述、镜头运动、服装——底图已经定了，写了不生效还占额度。\n\n**它对手部的控制有限。** 实测（带货版）：底图双手完全不入镜、prompt 明确写了\"手部不做大幅动作\"，omnihuman 仍自行生成了双手抬到胸前的讲解动作。要避免只能从底图的景别入手，靠 prompt 挡不住。\n\n**`fast_mode` 参数**：`jimeng-omnihuman-1.5` 有 `--fast_mode` 开关（默认 false）。计费逻辑只看 `resolution` 不看它（源码核对），所以开了**不涨价也不降价**，是纯粹的速度/质量取舍。一节课要跑十几段时值得试一次对比效果。\n\n批量跑（一节课有 8 段露脸），用 `--no-wait` 并发发出：\n\n```bash\nfor seg in open trans1 trans2 trans3 trans4 trans5 trans6 end; do\n  dlazy jimeng-omnihuman-1.5 --images ./lecturer/11-third.png \\\n    --audio ./audio/$seg.wav --resolution 720p --no-wait\ndone\n# 各自返回 generateId，再逐个取回\ndlazy status <generateId> --save ./clips/open.mp4\n```\n\n**第一次跑完，先探一下输出规格**（各模型规格互不相同，⑥ 要用）：\n\n```bash\nffprobe -v error -select_streams v:0 -show_entries stream=width,height,r_frame_rate -of csv=p=0 ./clips/open.mp4\nffprobe -v error -select_streams a:0 -show_entries stream=sample_rate,channels -of csv=p=0 ./clips/open.mp4\n```\n\n带货版实测竖屏 720p 档出的是 **704x1248 @ 25fps / 24000Hz 单声道**（不是标准 720x1280），且成片比输入音频长 0.1~0.2 秒。**横屏档的实际输出尺寸尚未实测**，第一次跑完务必自己探一次，把结果填进 ⑥ 的命令里。\n\n## ⑤ 课件\n\n正文那 18 分钟的画面主体。三条路，按精度需求选：\n\n**A. `file-to-video` 模板（推荐）** —— 已有 PPT / Word / PDF 讲义时，直接解析成带旁白和字幕的课件视频：\n\n```bash\ndlazy chat --skill file-to-video \\\n  --prompt \"把这份讲义做成 18 分钟的课程视频，六个章节，\n每章配旁白和字幕，风格克制专业，用深墨蓝配琥珀的双色系统，\n章节之间加过渡卡，不要花哨转场\" \\\n  --files ./讲义.pptx\n```\n\n它内部走 Remotion，**文字是真排版不是生图**，中文清晰可控可改。\n\n**B. 静态板 + Remotion 排版** —— 没有现成讲义时，用 `recipes.md` D 组出背景板，文字在 Remotion 里排：\n\n```bash\ndlazy gpt-image-2 --input @payload/chapter.json --save ./slides/ch1.png\n```\n\n**C. `math-explainer-video` 模板** —— 公式推导、定理可视化类课程，KaTeX 排公式 + SVG 画图：\n\n```bash\ndlazy chat --skill math-explainer-video --prompt \"把贝叶斯公式的推导做成 3 分钟动画讲解\"\n```\n\n**永远不要让生图模型写课件上的字。** 中文必然乱码，英文经常拼错，而且改一个字就要重出整张图。生图只负责背景和意象，文字交给 Remotion。\n\n## ⑥ 装配\n\n**CLI 不做视频合成。** `dlazy` 是模型调用器，没有 merge / concat 命令。\n\n**下面的 ffmpeg 命令均已本地实跑验证**（用 lavfi 造的规格不一致素材：1248x704@25fps/24000Hz mono 的讲师段 + 1920x1080@30fps/44100Hz stereo 的课件段），语法和规格统一逻辑确认可用。真实素材的规格请按 ④ 末尾探到的实际值替换。\n\n### 串行拼接（形态 A）\n\n**各段规格互不相同，必须全重编码。** `-c copy` 和 `-c:v copy` 都不能用——带货版实测过，视频流会刷屏 `Non-monotonic DTS`，产物被塞进错误的容器，画面不花但音画不同步。\n\n```bash\nffmpeg -i clips/open.mp4 -i slides/body1.mp4 -i clips/trans1.mp4 -filter_complex \\\n\"[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25[v0];\\\n[1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25[v1];\\\n[2:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25[v2];\\\n[0:a]aformat=sample_rates=44100:channel_layouts=stereo[a0];\\\n[1:a]aformat=sample_rates=44100:channel_layouts=stereo[a1];\\\n[2:a]aformat=sample_rates=44100:channel_layouts=stereo[a2];\\\n[v0][a0][v1][a1][v2][a2]concat=n=3:v=1:a=1[v][a]\" \\\n-map \"[v]\" -map \"[a]\" -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \\\n-c:a aac -ar 44100 -ac 2 lesson.mp4\n```\n\n实测结果：零警告，三段 6 + 10 + 4 秒拼出 **20.04 秒**（误差 0.04），输出统一为 1920x1080 / 25fps / 44100Hz stereo。\n\n**用 `aformat` 不要用 `aresample`。** `aresample=44100` 只统一采样率，不统一声道数——讲师段是单声道、课件段是立体声，混着送进 `concat`。ffmpeg 7.0 实测能自动协商跑通，但这是版本行为，不保险。`aformat=sample_rates=44100:channel_layouts=stereo` 把两项都显式钉死，两种写法输出完全一致，没有理由用前者。\n\n段数变化时改三处：输入 `-i` 的个数、`[vN]/[aN]` 的编号、`concat=n=` 的数字。\n\n### 画中画（形态 C）\n\n课件铺满，讲师小窗叠在右下角。\n\n**矩形小窗**（推荐，最稳）：\n\n```bash\nffmpeg -i slides/body2.mp4 -i clips/talk2.mp4 -filter_complex \\\n\"[1:v]scale=480:-2,setsar=1[pip];[0:v][pip]overlay=W-w-48:H-h-48:shortest=1[v]\" \\\n-map \"[v]\" -map 1:a -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \\\n-c:a aac -ar 44100 -ac 2 pip.mp4\n```\n\n**`shortest=1` 不能省。** 实测：讲师视频 6 秒、课件 10 秒，不加这个参数输出会是 10 秒——后 4 秒讲师小窗**定格成一张照片**（overlay 默认 `repeatlast=1`），音轨同时静音，看起来像播放器卡死。加上后输出 6.02 秒，跟随讲师段结束。\n\n`-map 1:a` 取讲师的音频（画中画时是讲师在讲）。`scale=480:-2` 的 `-2` 让高度按比例自适应并保持偶数（libx264 要求）。\n\n**圆形小窗**（更像课程直播，实测可用）：\n\n```bash\nffmpeg -i slides/body2.mp4 -i clips/talk2.mp4 -filter_complex \\\n\"[1:v]scale=360:360:force_original_aspect_ratio=increase,crop=360:360,setsar=1,format=rgba,\\\ngeq=r='r(X,Y)':g='g(X,Y)':b='b(X,Y)':a='if(gt(pow(X-W/2,2)+pow(Y-H/2,2),pow(W/2,2)),0,255)'[pip];\\\n[0:v][pip]overlay=W-w-48:H-h-48:shortest=1[v]\" \\\n-map \"[v]\" -map 1:a -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \\\n-c:a aac -ar 44100 -ac 2 pip_circle.mp4\n```\n\n`geq` 逐像素算 alpha，**比矩形版慢得多**。长视频建议先用矩形版对好时间轴，最后再换圆形出一次。\n\n圆形裁切要求底图下巴留足余量，否则圆一裁下巴就没了——这是 `recipes.md` 配方 13 存在的原因。\n\n### 或者交给沙箱模板\n\n需要字幕、章节标题、转场动画时，比手写 ffmpeg 省事：\n\n```bash\ndlazy chat --skill file-to-video \\\n  --prompt \"把这些素材装配成一节 20 分钟的课程视频：open.mp4 开场，\n之后六个章节的课件段与转场讲师段交替，end.mp4 结尾，全片加中文字幕，\n章节开头加标题卡\" \\\n  --files ./clips/*.mp4 ./slides/*.mp4\n```\n\n沙箱返回项目 id，后续用 `dlazy chat --project <id> --prompt \"...\"` 继续调整。\n\n## 一次性跑完的脚本骨架\n\n**中文一律走 JSON 文件，不要用 shell 变量。** 见 `troubleshooting.md` 的\"编码陷阱\"——用 `$(cat ...)` 拼中文 prompt 会静默产生乱码，命令照样返回 `ok: true`，出来的东西跟你要的毫无关系。\n\n```bash\n#!/usr/bin/env bash\nset -e\nmkdir -p lecturer audio clips slides payload\n\n# 底图整门课只做一次，做完注释掉\n# dlazy gpt-image-2 --input @payload/base.json --batch 4 --save ./lecturer/11-third.png\n# dlazy gpt-image-2 --images ./lecturer/11-third.png --input @payload/derive-full.json --save ./lecturer/12-full.png\n\n# 露脸段：配音 + 驱动\nfor seg in open trans1 trans2 trans3 trans4 trans5 trans6 end; do\n  dlazy qwen-tts --input @payload/tts-$seg.json --save ./audio/$seg.wav\ndone\n\ndlazy jimeng-omnihuman-1.5 --images ./lecturer/12-full.png \\\n  --audio ./audio/open.wav --input @payload/drive.json \\\n  --resolution 1080p --save ./clips/open.mp4\n\nfor seg in trans1 trans2 trans3 trans4 trans5 trans6; do\n  dlazy jimeng-omnihuman-1.5 --images ./lecturer/11-third.png \\\n    --audio ./audio/$seg.wav --input @payload/drive.json \\\n    --resolution 720p --save ./clips/$seg.mp4\ndone\n\ndlazy jimeng-omnihuman-1.5 --images ./lecturer/12-full.png \\\n  --audio ./audio/end.wav --input @payload/drive.json \\\n  --resolution 1080p --save ./clips/end.mp4\n\n# 正文段：写满 512 字符，一次调用顶四次\nfor i in 1 2 3 4 5 6; do\n  dlazy qwen-tts --input @payload/tts-body$i.json --save ./audio/body$i.wav\ndone\n\n# 课件与装配交给沙箱模板（CLI 不做合成）\necho \"露脸段与配音已就绪，接下来跑 ⑤ 与 ⑥\"\n```\n\n所有 JSON 用 **UTF-8** 保存。`payload/drive.json` 就一行：\n\n```json\n{ \"prompt\": \"人物自然讲解，幅度克制，偶尔轻微点头，身体基本不动\" }\n```\n\n跑之前先在每条命令后加 `--dry-run` 走一遍，确认参数和积分预估。一节课十几次驱动调用，参数写错一个字母就是几百积分。\n\nFile v1.0.17:recipes.md\n\n# 底图配方库 · 知识付费讲师数字人\n\n16 条配方。A~C 组是讲师人像，D 组是课件视觉素材。每条都是可直接粘贴执行的完整命令。\n\n## 使用前必读\n\n**实测状态。** 本库的**参数**全部经源码核对（`config/models/gpt-image-2.ts` 与 `jimeng-omnihuman-1-5.ts` 的 zod schema 与 costs 函数），尺寸枚举、字数上限、计费系数可以放心用。\n\n**已实跑并逐张核对的三条**（2026-08-28，各跑一次一次命中，未重试）：\n\n| 配方 | 核对结论 |\n|---|---|\n| 01 · 纯色抠像位 | 背景纯色无渐变、发丝边缘锐利可抠，人物居中。裁切位比 prompt 写的\"胸口\"略低，不影响画中画使用 |\n| 11 · 右三分之一构图 | 人物中轴命中约 75%，左侧三分之二完全空旷、明度均匀，可直接叠课件。**\"百分之七十五\"这个写法确实有效** |\n| 14 · 章节封面板 | 无任何假文字混入（这条是本库最容易翻车的），三色配色与留白区都符合 |\n\n驱动链路也已端到端跑通：配方 11 底图 → `qwen-tts` → `jimeng-omnihuman-1.5 --resolution 720p` → 出片。\n\n**其余 13 条仍未实跑。** 第一次用时加 `--batch 4` 并逐张检查，特别是\"注意\"里标出的高风险项。发现偏差请回写到对应配方下面，这个库要靠使用积累。\n\n**配方结构。** 每条 prompt 按同一骨架写，改的时候按段改，不要整段重写：\n\n```\n身份气质 → 妆造服装(材质) → 姿态手部 → 表情眼神 → 景别构图(焦段/机位/留白区)\n→ 背景景深 → 光线方案(主光/补光/光比) → 色彩基调 → 画质质感 → 驱动约束\n```\n\n比带货版多出的是**留白区**——课程画面要给课件让位置，这一段决定了这张底图能不能直接用。\n\n最后那段**驱动约束**是 A~C 组共有的，删了就容易驱动失败：\n\n> 单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\n\nD 组不是人像，没有这一段。\n\n**尺寸速记。** 课程横屏一律 `--size 3840x2160`。计费不看尺寸（只看 `--quality` 和有无参考图），所以 4K 与 `2048x1152` 同价 37 积分，直接用 4K。**别写成 `2160x3840`**，那是竖屏。\n\n**省积分替代。** 主命令用 `gpt-image-2 --quality high`（37 积分），中文语境理解最准。预算敏感时换 `seedream-5.0`（4K 仅 **8 积分**）：\n\n```bash\ndlazy seedream-5.0 --prompt \"<同一条配方 prompt>\" --size 16:9 --resolution 4k --save ./lecturer/base.png\n```\n\n本库配方长度控制在 **500 字符以内**，卡在 `seedream-5.0` 的上限之内，可以原样粘过去。\n\n**同一人设的三个机位必须派生，不能各自生成。** 配方 11 / 12 / 13 是一门课的三个机位。先用 11 出底图存档，12 和 13 用 `--images` 从它派生（见每条的\"派生命令\"），否则你会得到三个长得不一样的老师。派生时积分从 37 涨到 **60**。\n\n---\n\n## A 组 · 讲台场景\n\n按课程调性选一条。\n\n### 01 · 纯色抠像位 ⭐ 画中画首选\n\n**适用**：要把讲师做成画中画小窗叠在课件上。纯色背景便于后期抠像或直接圆形遮罩。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 34 岁左右的亚洲女性课程讲师，气质专业亲和可信，妆容干净自然的职业淡妆，豆沙色哑光唇色，肤质自然真实保留皮肤纹理，不做过度磨皮。发型为黑色及肩直发梳理整齐，发丝边缘清晰锐利与背景分离明确。上身穿雾霾蓝色圆领针织衫，面料织纹细腻，剪裁合身简洁，无任何图案文字logo。姿态为站立正面朝向镜头，双肩放松水平，双手自然垂放在身体两侧完全不入镜。表情为温和的浅笑，嘴角自然，眼神平视镜头专注有交流感。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物居中，画面下缘裁切在胸口位置。背景为完全均匀的浅灰蓝色纯色无缝背景，无任何渐变纹理道具文字，人物与背景明度差明显便于边缘分离。光线方案为正面双侧对称柔光箱主光加顶部发丝光，光比 1.2:1，面部受光极其均匀无阴影，背景独立布光亮度均匀一致。整体色彩基调为干净的低饱和冷灰调。画质为专业摄影棚商业人像，细节锐利，发丝边缘干净。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/01-keyable.png\n```\n\n**注意**：背景**必须是纯色不能有渐变**——渐变背景抠像时边缘会发脏。`--quality high` 在这条上不能降，发丝边缘是抠像成败的关键。\n\n不推荐用纯绿幕：omnihuman 驱动后的视频经过压缩，绿边溢色比浅灰蓝更难处理。圆形遮罩方案见 `pipeline.md` ⑥。\n\n---\n\n### 02 · 书房知识博主\n\n**适用**：人文、商业、心理、写作类课程。知识付费最经典的场景，信任感最好建立。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 38 岁左右的亚洲男性知识课程讲师，气质儒雅沉稳有学识感，短发梳理整齐两鬓有少量自然白发，面部有真实的年龄纹理与皮肤质感不做美颜。上身穿深灰蓝色羊毛开衫内搭浅灰色圆领衫，面料质感厚实有织纹，剪裁松弛得体。姿态为坐姿正面朝向镜头，背部挺直微微前倾表现投入感，双手轻放在桌面边缘仅露出手腕不入画。表情为平和从容的微笑，眼神温和平视镜头有沉稳的说服力。景别为中近景半身像，50mm 标准镜头，机位与视线齐平，人物位于画面右侧三分之一处，左侧三分之二留出大面积干净的背景区域。背景为温暖的书房环境，身后是深胡桃木色书架与排列整齐的书籍脊背，全部被大光圈虚化成柔和的暖色块，书脊上无任何可读文字。光线方案为侧前方窗户自然光作主光柔和漫射，另一侧暖色台灯补光，光比 2:1，面部有自然明暗过渡。整体色彩基调为低饱和的暖棕木质调。画质为自然光人文肖像摄影，真实细腻有空气感。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/02-study.png\n```\n\n**注意**：书架是模型最爱自作主张写字的地方。prompt 已写\"书脊上无任何可读文字\"，出图后仍要**放大检查书脊**——生成的假书名多半是乱码或不存在的英文，糊在成片里很掉档次。\n\n---\n\n### 03 · 教室白板\n\n**适用**：K12 学科辅导、考证培训、技能教学。有板书感，天然适合叠加公式和要点。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 32 岁左右的亚洲女性教师，气质干练清爽有亲和力，妆容为明亮干净的职业淡妆，肤质真实自然保留纹理。发型为黑色长发扎成利落低马尾，额前无碎发遮挡。上身穿浅杏色西装外套内搭白色衬衫，面料挺括有型，剪裁专业无任何图案文字。姿态为站立正面朝向镜头，身体略微侧向左侧，双肩放松，双手自然垂放身侧不入镜。表情为自信明朗的微笑，眉眼舒展，眼神平视镜头有讲解的专注感。景别为中近景半身像，50mm 镜头，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为大面积空白留白区域。背景为现代明亮的教室环境，身后是一整面干净的白色白板，白板上完全空白无任何字迹图形，白板边缘与浅灰墙面有轻微虚化。光线方案为教室顶部均匀漫射光加正面柔光补光，光比 1.3:1，面部通透明亮，白板受光均匀无反光光斑。整体色彩基调为明亮清爽的高明度中性调。画质为高清教育机构宣传摄影，清晰专业。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/03-classroom.png\n```\n\n**注意**：白板必须**完全空白**。模型很爱在白板上画公式和涂鸦，出来一定是乱码。空白白板才是最好的画布——后期用 Remotion 在上面排真正的板书，字才是清楚的。\n\n白板反光是另一个风险，prompt 已写\"无反光光斑\"，出图检查白板中央有没有一块高光。\n\n---\n\n### 04 · 演播室专业讲台\n\n**适用**：企业内训、认证课程、高客单价专业课。正式感最强。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 40 岁左右的亚洲男性资深讲师，气质权威沉稳有分量感，短发利落，面部轮廓清晰有真实的皮肤纹理与轻微胡茬阴影，不做美颜处理。上身穿深藏青色单排扣西装内搭白衬衫，无领带，面料为哑光精纺羊毛质感挺括，剪裁合身无任何徽章文字标识。姿态为站立正面朝向镜头，身姿挺拔肩部平稳，双手自然垂放身侧不入镜。表情为沉稳克制的微表情，嘴角轻收，眼神坚定平视镜头具有可信度与专业权威感。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧偏中，左侧留出充足的深色背景区域。背景为专业演播室环境，深灰蓝色渐变背景墙，远处有一条水平的冷白色灯带光晕，整体大幅虚化成深色调，无任何可读文字或标识。光线方案为侧前方 45 度柔光主光塑造面部立体感，主光充足使面部为画面最亮区域，背后加冷白色轮廓光勾勒发丝与肩线形成主体分离，光比 1.5:1，暗部扎实但不压过面部。整体色彩基调为低饱和的深蓝冷调。画质为高端商业演播级人像摄影，锐利有质感。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/04-studio.png\n```\n\n**注意**：深色调容易让模型把面部整体压暗，面部太暗会削弱驱动出的口型细节。prompt 已显式写\"面部为画面最亮区域\"，出图仍偏暗就把光比降到 1.3:1 重出。\n\n西装上的徽章是幻觉重灾区——已写\"无任何徽章文字标识\"，仍要检查胸口和袖口。\n\n---\n\n### 05 · 咖啡厅轻知识\n\n**适用**：软技能、生活方式、副业、个人成长类课程。降低距离感。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 29 岁左右的亚洲女性讲师，气质放松真诚像朋友聊天，妆容极淡近乎素颜，唇色为自然血色，皮肤自然真实可见纹理细节不做过度修饰。发型为黑色微卷及肩发随意自然带一点生活感的凌乱。上身穿浅燕麦色宽松棉质针织衫，面料纹理清晰有自然褶皱，袖口随意挽起。姿态为坐姿正面朝向镜头，背部放松靠在椅背上，双手轻放在桌面下方不入镜。表情为放松的浅笑带真诚的分享感，眼神温和平视镜头。景别为中近景半身像，50mm 镜头，机位略低于视线约 5 度营造平等对话感，人物位于画面左侧三分之一，右侧三分之二留出虚化的环境背景区。背景为温馨的咖啡馆一角，可见浅木色桌面边缘、暖黄色吊灯的模糊光斑、以及窗外的柔和自然光，背景被大光圈虚化成柔和色块，无任何可读文字招牌。光线方案为侧前方大面积窗户自然光作主光柔和漫射，另一侧墙面反光补光，光比 2:1，面部有自然明暗过渡呈现真实环境光感。整体色彩基调为低饱和的暖米调通透舒适。画质为自然光生活摄影质感真实细腻。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/05-cafe.png\n```\n\n**注意**：这是本库唯一**人物在左、留白在右**的配方——轻知识课程的课件通常更少更简，右侧留白放几个关键词就够。要做成满屏课件的课，换配方 11。\n\n咖啡杯是高频幻觉物，如果出图里人物手边出现杯子，检查它有没有挡住下巴。\n\n---\n\n### 06 · 工位实操\n\n**适用**：软件教学、办公技能、设计课、编程入门。讲师与屏幕同框，天然贴合录屏课。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 30 岁左右的亚洲男性职业讲师，气质专业干净务实，短发清爽整齐，戴细金属框眼镜，面部有真实皮肤纹理不做美颜。上身穿浅灰色纯色圆领卫衣，面料质感柔软有自然褶皱，剪裁简洁无任何图案logo文字。姿态为坐姿正面朝向镜头，背部挺直坐在人体工学椅上，双手轻放在桌沿边缘仅露出手腕不遮挡身体。表情为专注平和的微笑，眼神平视镜头有讲解的耐心感。景别为中近景半身像，50mm 镜头，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为虚化的桌面与屏幕区域留白。背景为整洁的现代办公工位，可见桌面上一台侧向摆放的显示器背面轮廓、一个白色马克杯、以及浅灰色墙面，全部大幅虚化成柔和色块，屏幕不朝向镜头不显示任何内容，无任何可读文字。光线方案为正面偏左柔光主光加顶部均匀漫射补光，光比 1.4:1，面部通透明亮眼镜片无强反光遮挡眼睛。整体色彩基调为干净的中性浅灰调。画质为专业职场环境人像摄影，清晰自然。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/06-desk.png\n```\n\n**注意**：**眼镜是驱动的风险项。** 镜片上的反光块会让 omnihuman 判断眼部区域出错，出现眼神呆滞或闪烁。prompt 已写\"镜片无强反光遮挡眼睛\"，出图后放大看眼睛——只要镜片上有一块白，就重出。\n\n不戴眼镜的版本更稳。这条配方删掉\"戴细金属框眼镜\"即可。\n\n---\n\n## B 组 · 学科人设\n\n按学科选。这一组的合规风险高于 A 组，先读每条的\"注意\"。\n\n### 07 · 学术专家\n\n**适用**：需要学术背书的课程（历史、科普、医学科普、法律常识）。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 45 岁左右的亚洲男性学者型讲师，气质沉静博学有书卷气，短发梳理整齐两鬓有明显自然白发，面部有清晰的年龄纹理法令纹与真实皮肤质感，完全不做磨皮美化。上身穿深灰色羊毛西装外套内搭浅蓝色衬衫，面料哑光有织纹，剪裁传统得体，衣领与胸口无任何徽章证书文字标识。姿态为坐姿正面朝向镜头，背部端正微微前倾，双手交叠轻放在桌面上仅露出手腕不入画。表情为平和内敛的浅笑，眼神沉稳温和平视镜头具有学者的可信度。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧三分之一，左侧留出大面积虚化背景。背景为安静的学术书房，身后是深色实木书柜与整齐书籍的模糊轮廓，全部虚化成柔和深色块，书脊与墙面上无任何可读文字或悬挂的证书奖状。光线方案为侧前方柔和窗光作主光，另一侧低强度补光，光比 2:1，面部明暗过渡自然有立体感。整体色彩基调为低饱和的深棕墨绿调沉稳内敛。画质为人文纪实肖像摄影，真实有质感年龄细节丰富。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/07-scholar.png\n```\n\n**注意（合规）**：prompt 里两次写了\"无任何证书奖状徽章\"，**这不是冗余，是硬要求**。模型极爱在学者背后墙上挂几幅证书、在胸口别个徽章，上面的机构名全是编造的。用一个挂着假证书的形象讲课，是虚构资质，平台会判违规。\n\n**白大褂、诊室、实验室不要用**——非持证主体使用医疗形象是明确红线。医学科普课就用这条的普通西装版本。\n\n---\n\n### 08 · 职场导师\n\n**适用**：管理、销售、职业规划、面试辅导类课程。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 36 岁左右的亚洲女性职场导师，气质干练自信有领导力，妆容为精致克制的职业妆，裸粉色唇色，肤质真实自然保留细节。发型为黑色及肩内扣短发打理利落。上身穿米白色西装外套内搭同色系丝质衬衫，面料垂坠有质感，剪裁利落专业，无任何图案文字。姿态为站立正面朝向镜头，肩背挺拔重心平稳，双手自然垂放身侧不入镜。表情为沉着自信的浅笑，眼神明亮平视镜头有说服力与亲和力的平衡。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为虚化的都市办公背景留白。背景为现代写字楼室内空间，可见落地窗的柔和天光、远处模糊的城市天际线轮廓与浅灰色墙面，全部大幅虚化成明亮柔和的色块，无任何可读文字或品牌标识。光线方案为侧前方落地窗自然光作主光柔和明亮，另一侧白墙反光补光，光比 1.5:1，面部通透有立体感。整体色彩基调为高明度低饱和的米白灰调，干净高级。画质为高端商业人像摄影，细节锐利质感真实。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/08-mentor.png\n```\n\n**注意**：落地窗强光容易在面部形成明暗分界。出图后看鼻梁两侧亮度差，超过两档就把光比降到 1.3:1 重出——驱动时明暗分界线会随头部转动出现撕裂感。\n\n---\n\n### 09 · 语言教师\n\n**适用**：英语、日语、小语种、口语陪练类课程。要亲和、明亮、有耐心感。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 27 岁左右的亚洲女性语言教师，气质亲切明朗有耐心感，妆容清透自然的淡妆，珊瑚粉色唇色气色好，皮肤自然真实有健康光泽保留纹理。发型为黑色中长发自然垂落在肩前，发丝清晰有光泽。上身穿浅蓝色棉质衬衫，面料柔软有自然褶皱，剪裁休闲舒适无任何图案文字。姿态为站立正面朝向镜头，肩膀放松自然，双手自然垂放身体两侧不入镜。表情为温暖开朗的微笑露出自然的笑容，眉眼弯起，眼神明亮平视镜头充满鼓励感。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为明亮干净的留白区域。背景为明亮简洁的浅米白色墙面，墙上有一小片虚化的绿植叶影，整体极简通透，无任何可读文字或装饰图案。光线方案为正面偏左大面积柔光主光，右侧反光板补光，光比 1.3:1，面部受光均匀明亮通透，眼中有清晰柔和的眼神光，背景比人物亮半档营造轻盈感。整体色彩基调为高明度的清爽浅蓝米白调。画质为清新自然的商业人像摄影，皮肤质感真实通透。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/09-language.png\n```\n\n**注意**：语言课的口型是内容的一部分（学生要看发音），**这条务必用 1080p 驱动不要降 720p**，且优先用配方 13 的近景机位做发音示范段。\n\n\"露出自然的笑容\"可能出成露齿笑——露齿的底图驱动时口型起始状态不自然。要闭唇笑就把这句改成\"嘴角自然上扬的闭唇微笑\"。\n\n---\n\n### 10 · 技术讲师\n\n**适用**：编程、数据、AI、运维类课程。冷调专业，与代码课件调性一致。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 31 岁左右的亚洲男性技术讲师，气质理性专注不修边幅但干净，短寸黑发，面部有真实的胡茬阴影与皮肤纹理完全不做美颜处理。上身穿深灰色纯色圆领 T 恤外搭黑色薄开衫，面料质感朴素，无任何 logo 图案文字。姿态为坐姿正面朝向镜头，背部微微放松地靠向椅背，双手轻放在桌沿仅露出手腕不遮挡身体。表情为平静专注的微表情，嘴角轻微收拢，眼神沉稳平视镜头有技术人的可信度。景别为中近景半身像，50mm 镜头，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为深色虚化留白区域。背景为极简的深色技术工作台环境，可见深灰色墙面、一条青蓝色氛围灯带的柔和光晕、以及一台侧向显示器的模糊边缘轮廓，屏幕不朝向镜头不显示任何内容，无任何可读文字。光线方案为侧前方 45 度柔光主光，主光充足使面部为画面最亮区域，背后加冷青色轮廓光勾勒发丝肩线形成主体分离，轮廓光不打到面部正面，光比 1.5:1。整体色彩基调为低饱和的冷灰青调，暗部扎实不发灰。画质为科技媒体级人像摄影，锐利有质感。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/10-tech.png\n```\n\n**注意**：冷色轮廓光对驱动是加分项（主体边缘清晰），但**别让彩色光上脸**——prompt 已写\"轮廓光不打到面部正面\"。青光打到脸颊会让口型区域的色彩判断出错。\n\n---\n\n## C 组 · 景别与机位\n\n一门课的三个机位。**从同一张底图派生，不要各自生成。**\n\n### 11 · 右三分之一构图 ⭐ 正文主力\n\n**适用**：全片 90% 的画面。人物在右，左侧三分之二放 PPT、代码、图表。\n\n这条是构图模板，人设部分从 A/B 组任选一条替换。以下用配方 02 的书房人设举例：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 38 岁左右的亚洲男性知识课程讲师，气质儒雅沉稳，短发整齐两鬓有自然白发，面部有真实年龄纹理不做美颜。上身穿深灰蓝色羊毛开衫内搭浅灰圆领衫，面料有织纹质感。姿态为坐姿正面朝向镜头，背部挺直，双手不入镜。表情为平和从容的微笑，眼神温和平视镜头。景别为中近景半身像，50mm 镜头，机位与视线齐平。构图为严格的右三分法：人物身体中轴位于画面从左至右百分之七十五的位置，人物只占据画面右侧三分之一区域，画面左侧三分之二为完全空旷的纯背景区没有任何物体道具，人物头顶距画面上缘留出适度空间。背景为温暖书房的虚化暖棕色调，左侧空旷区为均匀柔和的低对比度背景无任何细节与可读文字，便于后期在其上叠加图文内容。光线方案为侧前方柔和主光加另一侧补光，光比 1.8:1，面部明暗过渡自然，左侧空旷背景区受光均匀明度一致无光斑无阴影。整体色彩基调为低饱和暖棕调。画质为专业人像摄影真实细腻。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/11-third.png\n```\n\n**注意**：**\"百分之七十五\"这个具体数值不要删。** 只写\"人物在右侧\"，模型多半还是给你一个偏右一点的居中构图，留白不够放课件。写死百分比命中率明显更高。\n\n左侧留白区要**明度均匀无光斑**——上面叠白色文字时，背景有明暗变化会让文字某一段看不清。\n\n出图后拿把标尺量一下：人物左边缘到画面左缘的距离，应该占画面宽度的一半以上。不够就重出。\n\n---\n\n### 12 · 全画幅中近景（开场 / 结尾）\n\n**适用**：开场白和结尾总结。没有课件，讲师占据画面主体，建立连接感。\n\n**派生命令**（从配方 11 的底图派生，保住同一张脸）：\n\n```bash\ndlazy gpt-image-2 --images ./lecturer/11-third.png \\\n  --prompt \"保持画面中人物的面部特征发型服装完全一致，只改变构图与机位：人物身体中轴移到画面正中略偏左，人物在画面中的占比放大，景别为中近景半身像画面下缘裁切在胸口，人物头顶留出适度空间，背景保持同样的温暖书房虚化暖棕色调但两侧均衡分布，光线方案与色彩基调完全不变。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/12-full.png\n```\n\n**注意**：带 `--images` 时 `high` 档是 **60 积分**（无参考图是 37）。这是一次性成本，一门课只派生一次。\n\n派生出来后**把 11 和 12 并排看一眼**——如果脸有明显差异，重新派生而不是将就，观众对同一门课里讲师换脸极其敏感。\n\n---\n\n### 13 · 小窗特写（画中画）\n\n**适用**：叠在满屏课件右下角的圆形/圆角小窗。景别更近，小尺寸下仍能看清口型。\n\n```bash\ndlazy gpt-image-2 --images ./lecturer/11-third.png \\\n  --prompt \"保持画面中人物的面部特征发型服装完全一致，只改变景别：改为近景肩上半身像，85mm 中长焦大光圈，人物面部占画面高度约二分之一，人物居中，画面下缘裁切在肩部以下留出充足余量确保下巴与颈部完整不被裁切，背景保持同样色调但进一步虚化为均匀色块，光线与色彩基调完全不变。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/13-inset.png\n```\n\n**注意**：**\"下缘留出充足余量\"是关键。** 这张图后期要被圆形遮罩裁一刀，圆形会切掉四角——如果原图下巴离画面下缘太近，圆形一裁下巴就没了。\n\n不要比这个景别更近。裁到下巴以下不足一个下巴高度时，omnihuman 的下颌运动会穿帮。\n\n---\n\n## D 组 · 课件视觉\n\n这一组不是人像，**没有驱动约束段**，也不需要送去驱动。它们是第 ⑤ 层的静态素材。\n\n**统一原则：图里不要有任何文字。** 模型生成的中文字必然是乱码，英文也经常拼错。**文字一律留到 Remotion 里排**——那里的字才是清晰可控可改的。所有 D 组配方都写了\"无任何文字\"，别删。\n\n### 14 · 章节封面板\n\n**适用**：每章开头的过渡卡。留出标题排版区。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一张极简主义的课程章节封面背景图，画面为大面积的低饱和暖米白色渐变底，左侧三分之二为完全空旷的纯净留白区域没有任何元素，右侧三分之一有一组抽象的几何形状构成的装饰：几个不同大小的圆形与细线条以低对比度的浅灰蓝与浅陶土色叠放，形态克制有秩序感，边缘柔和。整体有细微的纸质颗粒纹理增加质感。构图平衡留白充足，视觉重心偏右，左侧留白区明度均匀一致便于叠加标题文字。画面中没有任何文字数字字母符号。整体色彩基调为低饱和的暖米白与浅陶土的克制配色，不超过三种颜色。画质为高端出版物级别的极简平面设计，干净精致有品味。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./slides/14-chapter.png\n```\n\n**注意**：出图后**逐个角落找文字**。模型在\"设计感\"图片里塞假英文单词的概率很高，一个糊掉的假单词会毁掉整张板的质感。\n\n---\n\n### 15 · 概念示意图\n\n**适用**：抽象概念的视觉隐喻，比干讲有效得多。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一张用于教学讲解的抽象概念示意图，画面中央为一组由细线条连接的几何节点构成的结构图形，节点为大小不一的圆形与方形，线条为均匀的细实线，整体呈现清晰的层级与连接关系，形态简洁克制有逻辑感。配色为深墨蓝色主体搭配琥珀色作为唯一的强调色标出其中一个关键节点，其余为浅灰色。背景为干净的浅米白色纯色底，四周留白充足。画面中没有任何文字数字字母标签。整体风格为高端科普读物的信息图设计，线条精准，视觉层次清晰，不使用任何立体阴影与渐变光效。画质为矢量风格的高清平面插图，边缘锐利干净。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./slides/15-concept.png\n```\n\n**注意**：这条本质是在赌模型的构图直觉，**命中率是本库最低的**，建议 `--batch 4` 起。\n\n真正需要精确结构的示意图（流程图、架构图），不要用生图——用 Remotion 手写 SVG，或者走 `math-explainer-video` 模板。生图适合的是\"感觉对了就行\"的意象图。\n\n---\n\n### 16 · 课程封面\n\n**适用**：课程详情页缩略图、专栏封面。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一张知识付费在线课程的封面背景图，画面为深墨蓝到深青色的低饱和渐变底，右侧三分之一有一组抽象的光影元素：柔和的琥珀色光晕与几条细的对角线条交错，营造出通透的空间纵深感，元素克制不喧宾夺主。左侧三分之二为纯净的深色留白区域，明度均匀一致，便于叠加课程标题与讲师信息。整体有细微的颗粒质感避免数字平涂感。画面中没有任何文字数字字母人物与具象物体。整体色彩基调为深墨蓝配琥珀的高级双色系统，不超过三种颜色。画质为高端商业视觉设计，质感精致有专业感。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./slides/16-cover.png\n```\n\n**注意**：封面是唯一**必须放文字**的地方，但仍然在 Remotion 或设计软件里排——这张图只提供背景。\n\n各平台封面比例不一：小鹅通专栏封面常见 16:9，B 站是 16:10，公众号是 2.35:1。用 4K 16:9 出图再按需裁，比重出省事。\n\n---\n\n## 出图检查清单\n\nA~C 组的每一张，进入驱动前逐项过：\n\n- [ ] 单人，没有第二张脸（背景照片、海报、镜子里的人都算）\n- [ ] 正脸或侧脸 ≤ 20°\n- [ ] 嘴与下巴无遮挡，下巴完整没被裁切\n- [ ] 手不在胸口以上，或干脆不入镜\n- [ ] 光比 ≤ 2:1，面部无斑驳阴影、无硬分界线\n- [ ] 眼镜片上没有反光白块\n- [ ] 画面里没有任何可读文字（书脊、白板、证书、徽章）\n- [ ] 留白区明度均匀，够放课件\n\n任何一项不过就重出。带着一张不合格的底图往下走，后面每一段驱动的积分都是白花的。\n\nFile v1.0.17:skill-card.md\n\n## Description:\n\nGuides course creators through planning and producing digital-lecturer videos with reusable avatar portraits, narrated slides, and short on-camera segments.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCourse creators and training teams use this skill to turn lessons, slides, and scripts into videos with a consistent digital lecturer for paid courses, public teaching, or internal training.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Course files and generated media may be uploaded to dLazy cloud services.\n\nMitigation: Obtain permission before uploading confidential or third-party training materials.\n\nRisk: Login and auth setup may store an API key locally.\n\nMitigation: Use temporary DLAZY_API_KEY authentication when appropriate and protect any locally stored credentials.\n\nRisk: Installing the dLazy CLI globally adds a local software dependency.\n\nMitigation: Review the pinned package before installing or use the documented npx alternative.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/dlazy-course-avatar)\n- [dLazy homepage](https://dlazy.com)\n- [Course production pipeline](artifact/pipeline.md)\n- [Portrait and slide recipes](artifact/recipes.md)\n- [Troubleshooting and compliance](artifact/troubleshooting.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Text, Shell commands, Configuration instructions]\n\n**Output Format:** [Markdown with command examples and production steps]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May guide generation of portraits, narration, and video through dLazy services; final video assembly requires a separate tool.]\n\n## Skill Version(s):\n\n1.0.17 (source: ClawHub release; skill frontmatter lists 1.0.0)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.17:troubleshooting.md\n\n# 排错与合规\n\n## 驱动失败对照表\n\n讲师\"不对劲\"时，**先回头看底图**，90% 的问题在那一步就注定了。\n\n| 症状 | 真因 | 修法 |\n|---|---|---|\n| 嘴型飘、对不上音 | 底图侧脸角度过大 | 重出底图，正脸或侧脸 ≤ 20° |\n| 嘴部糊成一团 | 面部像素太少 | 换近一档景别；语言课务必用 1080p |\n| 眼神呆滞或闪烁 | **底图眼镜片上有反光白块** | 重出，或直接去掉眼镜 |\n| 下巴穿帮、脖子扭曲 | 底图下巴被裁切 | 底图必须完整露出下巴与颈部 |\n| 手部出现鬼影 | 底图里手在胸口以上 | 手放桌沿以下，或不入镜 |\n| 驱动到了错误的人 | 底图有第二张脸（背景海报、照片） | 背景不能有任何人脸 |\n| 面部忽明忽暗 | 底图有斑驳阴影（百叶窗、树影） | 补光消除斑驳，或换纯色背景 |\n| 表情僵硬像蜡像 | 底图过度磨皮，失去皮肤纹理 | prompt 加\"真实皮肤纹理，不做过度磨皮\" |\n| 叠上课件后文字看不清 | **底图留白区有明暗变化或光斑** | 重出，留白区要明度均匀 |\n| 圆形小窗裁掉了下巴 | 底图下缘余量不足 | 用配方 13，下缘留足余量 |\n\n后三条是课程版特有的，带货版不会遇到。\n\n## 报错对照表\n\n| Code | 含义 | 处理 |\n|---|---|---|\n| 400 | 参数非法 | 多半是尺寸写法错了或 prompt 超上限，见下 |\n| 401 | `unauthorized` | `dlazy login` 或 `dlazy auth set <key>` |\n| 501 | 缺必填参数 | `error: required option '--prompt' not specified` |\n| 502 | 本地文件读不到 | 检查路径，Windows 下注意反斜杠转义 |\n| 503 | `insufficient_balance` | 充值：https://dlazy.com/dashboard/organization/settings?tab=credits |\n| 504 | 异步任务失败 | 看 `=== Generation Failed ===` 后面的真实原因 |\n\n### 400 最常见的三种\n\n**横竖屏写反了。** 课程版最高频的错误：\n\n```\n✅ --size 3840x2160    横屏 16:9 4K\n❌ --size 2160x3840    竖屏 9:16（这是带货版的）\n```\n\n**写反不会报错**——两个都是合法枚举值。你会拿到一张竖图，然后在装配那一步才发现，中间的驱动积分已经花掉了。从带货技能复制命令过来时，这一处必须改。\n\n`1536x1024` 是 **3:2 不是 16:9**，做课程封面会被平台裁掉两边。\n\n**提示词超上限。** 整次请求被拒，不是截断，积分不退：\n\n| 上限 | 模型 |\n|---|---|\n| 300 | `jimeng-omnihuman-1.5`（且可选） |\n| 500 | `seedream-5.0` 全系、`jimeng-t2i` |\n| 512 | `qwen-tts` |\n| 1300 | `qwen-image-2-pro` |\n| 2000 | `gpt-image-2`、`banana-pro`、`banana2` |\n\n正文段写满 512 是本技能推荐的省钱做法，**但别写超**。留 10 字符余量，标点也算字符。\n\n**尺寸写法串了模型。** 六种互不通用：\n\n```\ngpt-image-2      --size 3840x2160        （像素，用 x，固定枚举）\nqwen-image-2-pro --size 2688*1536        （像素，用 *）\nseedream-5.0     --size 16:9 --resolution 4k\nbanana-pro       --aspectRatio 16:9 --imageSize 4K   （驼峰）\nseedance-2.5     --ratio 16:9 --resolution 1080p\nkling-v3         --aspect_ratio 16:9     （下划线）\n```\n\n**音频超时长上限。** `jimeng-omnihuman-1.5`：1080p ≤ 30 秒，720p ≤ 60 秒。超了直接拒。正文段的长音频**不要送进驱动**——它们本来就不该驱动。\n\n## 中文 prompt 的编码陷阱（重要）\n\n**最隐蔽也最贵的坑。** 症状：命令返回 `ok: true`，但出来的图跟 prompt 毫无关系——通常是一张\"通用美女写真\"，你要的书房、白板、留白区全部被无视。\n\n原因不是模型跑偏，是 **prompt 在传到 API 之前就被编码破坏成乱码了**。模型收到乱码，只能靠残存字节碎片自由发挥，回落到训练集里最高频的人像模板。\n\n最常见的触发方式是在 Windows 上用脚本拼命令行：\n\n```bash\n# ❌ 危险：Python 在 Windows 下 stdout 默认走 GBK，\n#         bash 按 UTF-8 读，中文全变乱码，且不报任何错\nP=$(python -c \"print(open('prompt.txt',encoding='utf-8').read())\")\ndlazy gpt-image-2 --prompt \"$P\" ...\n```\n\n**正确做法：用 `--input` 传 UTF-8 的 JSON 文件，让 prompt 不经过 shell。**\n\n```bash\ncat > payload.json <<'EOF'\n{\"prompt\": \"一位 38 岁左右的亚洲男性知识课程讲师...\", \"size\": \"3840x2160\", \"quality\": \"high\", \"imageFormat\": \"png\"}\nEOF\ndlazy gpt-image-2 --input @payload.json --save ./lecturer/base.png\n```\n\n`--input` 每个工具都支持，flag 值可以和 JSON 混用（flag 优先）。**课程是批量生产，一律走这条路。**\n\n**自检方法**：出图明显跑偏时，先别改 prompt——把同一段中文直接内联到命令行手动跑一次。内联能出对图、脚本出错图，就是编码问题，不是提示词问题。\n\n乱码 prompt 也可能触发 `safety_violations=[sexual]`，因为破碎的字节序列会被安全分类器误判。看到这个错误先查编码，再怀疑用词。\n\n## 长课程批处理陷阱\n\n一节课十几段、一门课几十节，这些问题带货版（单条 3 段）根本遇不到。\n\n**1. 文件名用两位数补零。**\n\n```\n❌ body1 body2 ... body10 body11     字典序排成 body1, body10, body11, body2\n✅ body01 body02 ... body10 body11   顺序正确\n```\n\n`ffmpeg -i` 的顺序、`for f in *.mp4` 的展开顺序都按字典序。**一节课的章节被打乱顺序而你没发现**，是这条流水线最尴尬的失败方式。\n\n**2. 时长会累积漂移。**\n\n带货版实测：omnihuman 成片比输入音频长 **0.1~0.2 秒**。单段无所谓，但一节课 8 段露脸累积下来是 **0.8~1.6 秒**。\n\n如果你的字幕时间轴是按讲稿字数估算的，**到片尾会明显对不上**。两个解法：\n\n- 装配前用 `ffprobe` 读每段的**实际时长**，用实测值排时间轴，不要用估算值\n- 或者让 `file-to-video` 模板处理字幕，它按真实素材时长对齐\n\n```bash\nfor f in clips/*.mp4; do\n  echo -n \"$f \"; ffprobe -v error -show_entries format=duration -of csv=p=0 \"$f\"\ndone\n```\n\n**3. 断点续跑。**\n\n十几次驱动调用，跑到第 9 段失败，不该从头再来（前 8 段的积分已经花了）。脚本里加存在性判断：\n\n```bash\nfor seg in trans1 trans2 trans3 trans4 trans5 trans6; do\n  [ -f \"./clips/$seg.mp4\" ] && { echo \"skip $seg\"; continue; }\n  dlazy jimeng-omnihuman-1.5 --images ./lecturer/11-third.png \\\n    --audio ./audio/$seg.wav --input @payload/drive.json \\\n    --resolution 720p --save ./clips/$seg.mp4\ndone\n```\n\n**4. 跨节次的一致性漂移。**\n\n一门课录到第 12 节，你可能已经忘了当初用的是哪个音色、哪张底图。**开课时就把这几项写进项目根目录的配置文件**，每节课从它读：\n\n```json\n{\n  \"lecturer_base\": \"./lecturer/11-third.png\",\n  \"lecturer_full\": \"./lecturer/12-full.png\",\n  \"voice\": \"Ethan\",\n  \"drive_prompt\": \"人物自然讲解，幅度克制，偶尔轻微点头，身体基本不动\",\n  \"resolution_talk\": \"1080p\",\n  \"resolution_trans\": \"720p\"\n}\n```\n\n底图文件**要备份**。丢了就再也回不到同一张脸，整门课的形象断档。\n\n## 省积分策略\n\n按性价比排序：\n\n1. **砍露脸时长。** 驱动占 95%。这是唯一数量级的杠杆——串行形态比全程画中画省 10 倍，细节见 `pipeline.md` 开头。\n2. **转场段降 720p。** 15 积分/秒 vs 23，省 35%。转场只有 10 秒且景别偏侧，观众看不出。开场结尾留 1080p。\n3. **正文 TTS 写满 512 字符。** 固定 6 积分/次，写满是 10 次调用，切碎是 38 次，白花 168 积分。\n4. **底图整门课复用。** 157 积分摊到 30 节，每节 5 积分。\n5. **章节转场卡替代部分露脸。** 六次转场留三次露脸，其余用纯课件动画。\n6. **先 `--dry-run`。** 一节课十几次调用，参数写错一个字母就是几百积分。\n\n**不要在底图上省。** 底图差 → 驱动失败 → 整节课重跑。这笔账永远不划算。\n\n## 教培合规红线\n\n**这一套跟带货完全不同，别把带货版的合规清单套过来。** 教育培训广告受《广告法》第二十四条专门规制，比一般商品广告严得多。\n\n**四条硬禁止**（第二十四条）：\n\n1. **不得对升学、通过考试、获得学位学历或合格证书作保证性承诺**，也不得对培训效果作明示或暗示的保证。\n   - 禁：「包过」「保过」「一次上岸」「学完必会」「通过率 98%」「不过退费」（作为效果承诺时）\n2. **不得明示或暗示有考试机构、其工作人员、命题人员参与培训。**\n   - 禁：「命题组老师授课」「内部押题」「考试院背景」\n3. **不得利用科研单位、学术机构、教育机构、行业协会、专业人士、受益者的名义或形象作推荐、证明。**\n   - 这条对数字人**尤其致命**：用数字人扮演\"往期学员\"讲述学习效果，是用受益者形象作证明，**同时还是虚构的**，双重违规。\n   - 学员证言、前后成绩对比、\"我用了三个月从 60 分到 130 分\"——全部禁止。\n4. **虚构师资与资质。** 数字人讲师不得被包装成\"某某大学教授\"「二十年教龄名师」等未经证实的身份。`recipes.md` 配方 07 反复强调\"无任何证书奖状徽章\"就是为此——模型会自己编造机构名挂在墙上。\n\n**视觉红线**：\n\n- 白大褂、诊室、实验室 → 非持证主体禁用\n- 证书、奖状、胸牌、机构 logo → 出图后逐项检查并删除，模型编造的机构名是虚构资质\n- 背景里的可读文字 → 所有配方都写了\"无任何可读文字\"，别删这句\n\n**面向未成年人的额外限制**：学科类校外培训的广告投放在多地有专门限制，面向学龄前儿童的线上培训被明确禁止。做 K12 内容前先确认当地现行规定，这块政策变动频繁。\n\n**AI 生成内容标识**：我国已施行 AI 生成合成内容标识要求，数字人讲师视频属于典型的 AI 生成合成内容。发布时按平台要求勾选「内容由 AI 生成」，抖音、快手、B 站、视频号均有对应开关。付费课程还建议在课程介绍页显性说明讲师形象为 AI 生成——**这既是合规要求，也能避免学员事后以\"虚假宣传\"投诉退款**。\n\n法规会变，上面是写作时的通行理解，**不构成法律意见**。正式商用前请让法务过一遍课程文案。\n\n## 什么时候不该用数字人\n\n诚实地说，这几种情况真人出镜更好：\n\n- **需要演示操作的课**——数字人只能说话，不能拿教具、不能写板书、不能操作软件。软件课直接录屏 + 配音，比数字人合适得多。\n- **强人格 IP 的课**——知识付费的溢价很大程度来自\"这个人\"。老师本人有影响力时，数字人是在稀释资产。\n- **需要即时互动的直播课**——数字人是预渲染的，答不了问。\n- **已有真人素材、只是要换语言**——直接用 `videoretalk` 或 `sync-lipsync-3` 做口型替换，不需要重造一个人。\n\n数字人的真正优势是**批量与一致性**：一门课几十节，同一个形象、同一个音色、随时可改稿重出，不用约老师档期、不用重打光、改一句话不用重录一整节。用在这个场景上才划算。\n\n课程内容的价值在于讲得对不对、清不清楚——**这件事数字人帮不上忙，讲稿才是**。把省下的时间花在 ② 上。\n\nArchive v1.0.16: 6 files, 33612 bytes\n\nFiles: pipeline.md (16592b), recipes.md (31651b), skill-card.md (1802b), SKILL.md (11164b), troubleshooting.md (11508b), _meta.json (139b)\n\nFile v1.0.16:SKILL.md\n\n---\nname: dlazy-course-avatar\nversion: 1.0.0\ndescription: Knowledge-course / online-teaching avatar lecturer — 16 landscape base-portrait recipes plus the slide-first pipeline that keeps a 20-minute lesson under 3000 credits. Use when the user wants a digital human to teach a paid course, a training module or a knowledge-sharing video on platforms like Xiaoetong, Tencent Classroom, Bilibili, YouTube or an internal LMS.\nmetadata: {\"clawdbot\":{\"emoji\":\"🎓\",\"requires\":{\"bins\":[\"npm\",\"npx\"],\"env.optional\":[\"DLAZY_API_KEY\"]},\"install\":\"npm install -g @dlazy/cli@1.2.3\",\"installAlternative\":\"npx @dlazy/cli@1.2.3\",\"homepage\":\"https://dlazy.com\",\"configLocation\":\"~/.dlazy/config.json\",\"apiEndpoints\":[\"api.dlazy.com\",\"files.dlazy.com\"]},\"openclaw\":{\"systemPrompt\":\"When invoking this skill, read the 露脸预算 section of SKILL.md before quoting any cost, and read recipes.md before writing any base-portrait prompt. Run `dlazy <model> -h` to confirm current flags before building a command.\"}}\n---\n\n# 知识付费讲师数字人\n\n课程视频跟带货视频最大的不同：**观众来看的不是你的脸，是你屏幕上的东西。**\n\n这句话不是审美判断，是成本判断。`jimeng-omnihuman-1.5` 按音频秒数计费，1080p 是 **23 积分/秒**。一节 20 分钟的课全程用数字人驱动：\n\n```\n1200 秒 × 23 = 27600 积分（驱动）\n```\n\n而同样一节课，讲师只在开场、章节转场、结尾露脸（约 110 秒），其余画面是课件 + 配音：\n\n```\n110 秒 × 23 = 2530 积分（驱动）  ——  省掉 90.8%\n```\n\n算上配音，两条路线的**全成本**是 2640 对 27840，详见下面的\"露脸预算\"。\n\n**省下的 25000 积分不是靠妥协换来的，成片反而更像一门正经的课。** 全程一张脸对着你讲 20 分钟，是知识付费里完播率最差的形态之一。\n\n所以这个技能的核心不是\"怎么把数字人做得更真\"，而是**怎么把数字人用在该用的 110 秒上**，剩下的交给课件。底图配方解决前者，露脸预算解决后者。\n\n## 何时使用\n\n- 做小鹅通 / 腾讯课堂 / 知识星球 / B 站 / YouTube 的付费课或公开课\n- 企业内训、SOP 培训、新员工入职课程\n- 一门课几十节，需要**同一个讲师形象跨集稳定复用**\n- 已有 PPT / 讲义 / 文档，想变成有讲师出镜的课程视频\n- 真人讲师没时间录制，或需要多语言版本\n\n不适用于：单条知识口播短视频（用 `dlazy-short-video`，竖屏逻辑不同）、纯课件无讲师的文档转视频（直接 `dlazy chat --skill file-to-video`）、数学公式推导动画（那是 `math-explainer-video` 模板的活）。\n\n## 与带货版的根本差异\n\n如果你用过 `dlazy-ecommerce-avatar`，这五处是**不能照搬**的：\n\n| | 带货 | 课程 |\n|---|---|---|\n| 画幅 | 竖屏 9:16 | **横屏 16:9** |\n| 构图 | 人物居中 | **人物偏侧，留出内容区** |\n| 露脸 | 全程 | **只在开场/转场/结尾** |\n| 单集时长 | 30~60 秒 | **8~40 分钟**（要切几十段） |\n| 合规红线 | 广告法第九条（绝对化、疗效） | **广告法第二十四条**（升学承诺、通过率、资质） |\n\n尺寸参数尤其容易串。带货是 `--size 2160x3840`，课程是 `--size 3840x2160`——写反了不报错，出一张竖图，然后你会在装配那一步才发现。\n\n## 五条硬约束\n\n**1. 横屏直接上 4K，不额外花钱。**\n\n`gpt-image-2` 的计费**只看 `--quality` 和有没有参考图，完全不看 `--size`**（源码核对：`config/models/gpt-image-2.ts` 的 `costs`）。所以：\n\n```\n--size 2048x1152 --quality high   →  37 积分\n--size 3840x2160 --quality high   →  37 积分   ← 同价，直接用这个\n```\n\n横屏的 16:9 有两档（`2048x1152` / `3840x2160`），**竖屏只有 4K 一档**（`2160x3840`）。既然同价，中等档只在你需要小文件时才有意义。\n\n注意 `1536x1024` 是 **3:2 不是 16:9**，拿去做课程封面会被平台裁掉两边。\n\n**2. 底图要给内容留位置。**\n\n课程画面的左侧（或右侧）三分之二要放 PPT、板书、代码、图表。讲师站在剩下的三分之一里。\n\n这意味着底图**不能居中构图**——居中的人像叠上课件，要么挡内容，要么只能缩成一个小圆窗浪费掉整张 4K。配方 11 是为此专门写的，课程主力就用它。\n\n反过来，开场白和结尾这两段没有课件，用配方 12 的全画幅中近景，视觉上形成\"打招呼 → 讲内容 → 总结\"的节奏。\n\n**3. 一门课的底图必须一次定死。**\n\n带货可以每条视频换个人设，课程不行。第 3 节的讲师换了件衣服，观众立刻出戏。\n\n**开课前把底图存成文件，之后几十节全部引用同一个文件。** 不要指望同一段 prompt 能复现同一张脸——两次采样出的不是一个人。详见\"保持同一张脸\"。\n\n**4. 时长是硬上限，一节课要切几十段。**\n\n`jimeng-omnihuman-1.5` 的音频上限：**1080p ≤ 30 秒，720p ≤ 60 秒**。\n\n按每秒 4.5 字算（实测 `qwen-tts` 为 4.54~4.71 字/秒），30 秒 ≈ 130 字。而 `qwen-tts` 自己的 prompt 上限是 **512 字符**——中文一个字算一个字符，加标点后 130 字很安全。\n\n写讲稿时就**按 110~130 字一段切好**，别写完 20 分钟才回头切，语气会断。\n\n**5. 中文 prompt 走 `--input` JSON 文件。**\n\n用 shell 变量拼中文，在 Windows 上会静默变乱码——命令照样返回 `ok: true`，但出图跟 prompt 毫无关系。批量生产一律：\n\n```bash\ndlazy gpt-image-2 --input @payload.json --save ./lecturer/base.png\n```\n\n详见 `troubleshooting.md` 的\"编码陷阱\"。不确定参数时先 `--dry-run`，打印载荷和积分预估，不出图不扣分。\n\n## 露脸预算\n\n这是本技能最该记住的一张表。以一节 **20 分钟**的课为例：\n\n| 段落 | 时长 | 画面 | 驱动 | TTS | 小计 |\n|---|---|---|---|---|---|\n| 开场白 | 30 秒 | 讲师全画幅 | 690 | 6 | 696 |\n| 章节转场 × 6 | 各 10 秒 | 讲师偏侧 + 章节标题 | 1380 | 36 | 1416 |\n| 正文讲解 | 18 分钟 | **课件 + 配音，无讲师** | 0 | 60 | 60 |\n| 结尾总结 | 20 秒 | 讲师全画幅 | 460 | 6 | 466 |\n| 合计 | 20 分钟 | | 2530 | 108 | **约 2640** |\n\n对照全程驱动的 27840 积分（27600 驱动 + 240 TTS）。**同一节课，差 10 倍以上。**\n\n正文那 18 分钟只要 60 积分，是因为 **`qwen-tts` 固定 6 积分一次，与字数无关**（源码核对：`costs` 直接 `return 6`）。由此得到一条不显然的优化：\n\n> **正文段不做驱动，不受 30 秒时长限制，所以每次调用应该把 512 字符写满。**\n\n写满是 10 次调用 60 积分；如果沿用露脸段那种 130 字一段的切法，同样的内容要 38 次调用 228 积分。**白花 168 积分买了同一段音频。** 露脸段受驱动的 30 秒上限约束只能切短，正文段没有这个约束——两者的切法必须分开。\n\n想再省，两个杠杆：\n\n- **降到 720p**：15 积分/秒，再省 35%。讲师小窗在 720p 下完全够用——它在成片里只占画面的六分之一，观众看不出差别。全画幅的开场结尾建议留在 1080p。\n- **章节转场用静态卡**：把 6 次转场里的一半换成纯课件动画，只保留关键章节露脸，再省 700 左右。\n\n**不要省的地方是底图那 37 积分。** 一张底图要服务几十节课，摊下来趋近于零；底图不合格导致驱动失败，一次就是几百上千积分。\n\n## 流水线\n\n```\n① 底图     gpt-image-2 (2000字) / seedream-5.0 (500字)   ← 提示词杠杆全在这\n② 讲稿     claude-sonnet-5 / qwen3.8-max                  ← 按 110~130 字/段切好\n③ 配音     qwen-tts (512字符上限) / doubao-tts            ← 全课必须同一音色\n④ 驱动     jimeng-omnihuman-1.5 (300字, ≤30秒@1080p)      ← 只做露脸段；单点依赖\n⑤ 课件     Remotion 模板 / gpt-image-2 出静态板           ← 正文主体在这\n⑥ 装配     dlazy chat --skill file-to-video               ← CLI 本身不做合成\n```\n\n**CLI 没有视频合成能力。** `dlazy` 是模型调用器，没有 merge / concat 命令。要交付 mp4，最后一步必须走沙箱模板或你自己的 ffmpeg。\n\n**④ 是单点依赖。** 5 个数字人模型里只有 `jimeng-omnihuman-1.5` 吃「静态图 + 音频」，其余四个都要「现成的说话视频 + 音频」才能换口型。它一挂整条链路就断，降级成本翻倍。\n\n**⑤ 是课程版真正的主战场。** 带货版这一层只是插几个产品空镜，课程版这一层是全片 90% 的画面。`file-to-video` 模板能把 PPT / Word / PDF 直接解析成带旁白和字幕的课件视频，讲师片段作为素材叠进去。完整命令见 `pipeline.md`。\n\n## 配方索引\n\n`recipes.md` 里有 16 条配方，参数全部经源码核对，可直接粘贴执行。\n\n| 组 | 配方 | 适用 |\n|---|---|---|\n| A 讲台场景 | 01 纯色抠像位 / 02 书房 / 03 教室白板 / 04 演播室 / 05 咖啡厅 / 06 工位实操 | 按课程调性选一条 |\n| B 学科人设 | 07 学术专家 / 08 职场导师 / 09 语言教师 / 10 技术讲师 | 按学科选，注意 07 的资质合规 |\n| C 景别机位 | 11 **右三分之一构图** / 12 全画幅中近景 / 13 小窗特写 | 11 是正文主力，12 开场结尾，13 画中画 |\n| D 课件视觉 | 14 章节封面板 / 15 概念示意图 / 16 课程封面 | 第 ⑤ 层的静态素材 |\n\n选不动就用 **配方 11 + 配方 12 这一对**：11 出正文用的偏侧构图，12 出开场结尾用的全画幅，同一人设两个机位，一门课就够了。\n\n## 保持同一张脸\n\n一门课几十节，人设一致性是刚需。三种做法，从稳到弱：\n\n1. **存图复用**（唯一推荐）——第一次满意后把底图存成文件，全课引用同一个文件，脸 100% 一致\n2. **参考图重绘**——`gpt-image-2 --images base.png --prompt \"同一人物，换成...\"`，能换背景保住脸，但**积分从 37 涨到 60**（有参考图时 high 档计费不同），且跨集微妙差异会累积\n3. **纯文字复现**——不要用。同样的 prompt 两次出的脸不是一个人\n\n配方 11 / 12 / 13 是同一人设的三个机位，**必须用做法 2 从同一张底图派生**，不要各自独立生成——否则三个机位是三个人。\n\n## 认证\n\n```bash\ndlazy login          # 设备码流程，自动保存 key\ndlazy auth set KEY   # 已有 key 时直接写入\n```\n\nKey 从 https://dlazy.com/dashboard/organization/api-key 获取，保存在 `~/.dlazy/config.json`。也可用 `DLAZY_API_KEY` 环境变量按次传入。\n\n积分不足返回 `insufficient_balance`，充值入口：https://dlazy.com/dashboard/organization/settings?tab=credits\n\n## Reference Map\n\n| 文件 | 内容 |\n|---|---|\n| `recipes.md` | 16 条底图与课件配方，完整可执行命令 + 每条的驱动注意事项 |\n| `pipeline.md` | ①~⑥ 逐步命令，含分段批处理、画中画合成、成本估算 |\n| `troubleshooting.md` | 驱动失败对照表、长课程批处理陷阱、教培合规红线 |\n\nFile v1.0.16:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"dlazy-course-avatar\",\n  \"version\": \"1.0.16\",\n  \"publishedAt\": 1791075806499\n}\n\nFile v1.0.16:pipeline.md\n\n# 完整流水线 · 从讲义到成片\n\n以\"一节 20 分钟横屏课程\"为例，逐步给出可执行命令。\n\n## 先定成片形态\n\n动手前先定这个，它决定了成本量级，改起来要重做。\n\n**A. 串行（推荐）** —— 讲师段与课件段前后接续，同一时刻只有一种画面：\n\n```\n[讲师 开场 30s] → [课件 正文] → [讲师 转场 10s] → [课件 正文] → … → [讲师 结尾 20s]\n```\n\n讲师只需驱动 110 秒 ≈ **2640 积分**。这是知识付费最主流的形态，也是本技能的默认路线。\n\n**B. 全程画中画** —— 课件铺满，讲师小窗常驻右下角：\n\n讲师要驱动满 1200 秒 ≈ **27840 积分**。**10 倍成本**，换来的只是一个六分之一大小的常驻人头。除非甲方明确要求，否则不值。\n\n**C. 局部画中画（折中）** —— 串行为主，只在 2~3 个关键讲解点让小窗出现 30 秒：\n\n比 A 多花约 2000 积分，换来\"讲师一直在场\"的感觉。做企业内训、需要强讲师存在感时用这条。\n\n下面按 **A** 展开，⑥ 里给出画中画的合成命令（C 用得上）。\n\n## 成本结构\n\n| 步骤 | 命令 | 积分 |\n|---|---|---|\n| ① 底图 | `gpt-image-2 --quality high` | 37（一门课一次） |\n| ① 派生机位 | `gpt-image-2 --images` | 60 × 2（一门课一次） |\n| ② 讲稿 | `claude-sonnet-5` | 个位数 |\n| ③ 配音 | `qwen-tts` **固定 6 积分/次** | 约 108 |\n| ④ **驱动** | `jimeng-omnihuman-1.5` 1080p × 110 秒 | **2530** |\n| ⑤ 课件 | `gpt-image-2` 静态板 × N | 37 × N |\n| ⑥ 装配 | 沙箱模板 / 自己 ffmpeg | — |\n| 单节合计 | | **约 2650** |\n\n底图那 157 积分（37 + 60×2）是**整门课一次性**的，摊到 30 节上每节 5 积分。\n\n**驱动占 95%。** 所以省钱只有一个方向：**砍露脸时长**，不是砍画质。\n\n## ① 底图\n\n从 `recipes.md` 选一条，先出正文主力机位（配方 11），再派生另外两个机位：\n\n```bash\n# 主力机位：右三分之一构图，左侧留给课件\ndlazy gpt-image-2 --input @payload/base.json --batch 4 --save ./lecturer/11-third.png\n\n# 从它派生开场/结尾用的全画幅（保住同一张脸）\ndlazy gpt-image-2 --images ./lecturer/11-third.png --input @payload/derive-full.json \\\n  --save ./lecturer/12-full.png\n```\n\n`--batch 4` 并行出 4 张选一张（积分 ×4 = 148）。**人脸一次难中，这个钱值得花一次**——选定后这张脸要用几十节课。\n\n出图后按 `recipes.md` 末尾的检查清单逐项过再往下走。带着一张不合格的底图，后面每一节课的驱动积分都是白花的。\n\n## ② 讲稿\n\n**关键：露脸段和正文段用两种切法。** 这是课程版最容易做错的一步。\n\n| | 切法 | 为什么 |\n|---|---|---|\n| 露脸段 | **110~130 字一段** | 受 omnihuman 的 30 秒硬上限约束 |\n| 正文段 | **写满 500 字符** | 不驱动，无时长约束；TTS 固定 6 积分/次，写满省钱 |\n\n中文口播约 **每秒 4.5 字**（实测 `qwen-tts` 为 4.54~4.71 字/秒），130 字 ≈ 29 秒，卡在 30 秒上限内安全。\n\n```bash\ndlazy claude-sonnet-5 --prompt \"为这门课的第 3 节写讲稿。\n主题：<本节主题>\n时长：20 分钟，共 6 个章节\n输出三类文本，用 === 分隔：\n1. 开场白：110 字以内，抛出本节要解决的问题，不要自我介绍和寒暄\n2. 章节转场 × 6：每条 45 字以内，承上启下，点出下一章要讲什么\n3. 正文讲解 × 6：每章一段，每段严格控制在 480 字以内（含标点），\n   语言口语化可直接朗读，有具体例子和数字，避免书面语和排比句\n4. 结尾总结：90 字以内，收束要点并给出下一节的钩子\n合规要求：不得出现升学率、通过率、保过、包会等承诺性表述，\n不得虚构任何机构背书、职称或从业资质\n输出纯文本，不要任何解释\"\n```\n\n最后那条合规要求是硬线，别删——原因见 `troubleshooting.md` 的\"教培合规红线\"。\n\n## ③ 配音\n\n`qwen-tts` 的 prompt **上限 512 字符，超出整次请求 400，积分不退**。\n\n`qwen-tts` 的输出是 **WAV 不是 MP3**（响应 URL 后缀为 `.wav`，文件头为 `RIFF/WAVE`）。`--save` 只决定本地文件名，不做转码——存成 `.mp3` 会得到一个扩展名骗人的 WAV 文件，第 ⑥ 步 ffmpeg 装配时按扩展名推断格式就会出错。**存成 `.wav`。**\n\n\n```bash\n# 露脸段（短，受驱动时长约束）\ndlazy qwen-tts --input @payload/tts-open.json  --save ./audio/open.wav\ndlazy qwen-tts --input @payload/tts-trans1.json --save ./audio/trans1.wav\n\n# 正文段（写满 500 字符，一次调用顶四次）\ndlazy qwen-tts --input @payload/tts-body1.json --save ./audio/body1.wav\n```\n\n`payload/tts-open.json` 形如：\n\n```json\n{ \"prompt\": \"<文本>\", \"voice\": \"Cherry\" }\n```\n\n音色选择：\n\n- `--voice Cherry`（默认，年轻女声）\n- `--voice Serena` / `Vivian`（成熟女声，适合人文、管理类）\n- `--voice Ethan` / `Ryan`（男声，适合技术、商业类）\n- 全部系统音色见 `dlazy qwen-tts -h`\n\n要更贴合人设的声音，用设计模式自然语言描述：\n\n```bash\ndlazy qwen-tts --generation_mode design \\\n  --voice_prompt \"40岁男性，语速平稳偏慢，讲课语气，重点处有自然停顿，不夸张\" \\\n  --prompt \"<文本>\" --save ./audio/open.wav\n```\n\n**整门课必须用同一个音色。** 不只是同一节课——第 5 节换了声音，等于换了老师。把音色 id 写进项目配置文件，别靠记忆。\n\n课程配音比带货要**慢**。带货求煽动，课程求听得清。设计模式里写\"语速平稳偏慢\"比默认语速更适合教学。\n\n## ④ 驱动\n\n**只驱动露脸段。** 正文段没有讲师画面，跳过这一步——这就是省下 90% 积分的地方。\n\n**这一步是单点依赖。** dLazy 有 5 个数字人相关模型，只有 `jimeng-omnihuman-1.5` 接受「静态图 + 音频」：\n\n| 模型 | 输入 | 能否用底图驱动 |\n|---|---|---|\n| `jimeng-omnihuman-1.5` | `--images` + `--audio` | ✅ 唯一 |\n| `videoretalk` | `--video_url` + `--audio_url` | ❌ 要现成视频 |\n| `sync-lipsync-3` | `--video_url` + `--audio_url` | ❌ 要现成视频 |\n| `heygen-lipsync-speed` | `--video_url` + `--audio_url` | ❌ 要现成视频 |\n| `jimeng-dream-actor` | `--images` + `--videos` | ❌ 动作迁移，不吃音频 |\n\n它一挂整条链路就断。降级路径是「i2v 生成说话视频 → videoretalk 对口型」，成本翻倍，能走主路径就别走。\n\n```bash\n# 开场：全画幅机位\ndlazy jimeng-omnihuman-1.5 \\\n  --images ./lecturer/12-full.png \\\n  --audio ./audio/open.wav \\\n  --input @payload/drive.json \\\n  --resolution 1080p \\\n  --save ./clips/open.mp4\n\n# 章节转场：偏侧机位，可降 720p 省钱\ndlazy jimeng-omnihuman-1.5 \\\n  --images ./lecturer/11-third.png \\\n  --audio ./audio/trans1.wav \\\n  --input @payload/drive.json \\\n  --resolution 720p \\\n  --save ./clips/trans1.mp4\n```\n\n`--prompt` 上限 **300 字符且可选**（`payload/drive.json` 里就一行）。它控制的是**运镜与动作幅度**，不是画面内容——画面已被底图定死。课程场景的有效写法：\n\n| 想要 | 写法 |\n|---|---|\n| 讲课标准态 | `人物自然讲解，幅度克制，偶尔轻微点头，身体基本不动` |\n| 开场问候 | `人物微笑讲话，开场有轻微的点头示意，表情自然亲和` |\n| 强调重点 | `人物讲解语气加重时头部小幅前倾，眼神专注` |\n\n**不要写**画面描述、镜头运动、服装——底图已经定了，写了不生效还占额度。\n\n**它对手部的控制有限。** 实测（带货版）：底图双手完全不入镜、prompt 明确写了\"手部不做大幅动作\"，omnihuman 仍自行生成了双手抬到胸前的讲解动作。要避免只能从底图的景别入手，靠 prompt 挡不住。\n\n**`fast_mode` 参数**：`jimeng-omnihuman-1.5` 有 `--fast_mode` 开关（默认 false）。计费逻辑只看 `resolution` 不看它（源码核对），所以开了**不涨价也不降价**，是纯粹的速度/质量取舍。一节课要跑十几段时值得试一次对比效果。\n\n批量跑（一节课有 8 段露脸），用 `--no-wait` 并发发出：\n\n```bash\nfor seg in open trans1 trans2 trans3 trans4 trans5 trans6 end; do\n  dlazy jimeng-omnihuman-1.5 --images ./lecturer/11-third.png \\\n    --audio ./audio/$seg.wav --resolution 720p --no-wait\ndone\n# 各自返回 generateId，再逐个取回\ndlazy status <generateId> --save ./clips/open.mp4\n```\n\n**第一次跑完，先探一下输出规格**（各模型规格互不相同，⑥ 要用）：\n\n```bash\nffprobe -v error -select_streams v:0 -show_entries stream=width,height,r_frame_rate -of csv=p=0 ./clips/open.mp4\nffprobe -v error -select_streams a:0 -show_entries stream=sample_rate,channels -of csv=p=0 ./clips/open.mp4\n```\n\n带货版实测竖屏 720p 档出的是 **704x1248 @ 25fps / 24000Hz 单声道**（不是标准 720x1280），且成片比输入音频长 0.1~0.2 秒。**横屏档的实际输出尺寸尚未实测**，第一次跑完务必自己探一次，把结果填进 ⑥ 的命令里。\n\n## ⑤ 课件\n\n正文那 18 分钟的画面主体。三条路，按精度需求选：\n\n**A. `file-to-video` 模板（推荐）** —— 已有 PPT / Word / PDF 讲义时，直接解析成带旁白和字幕的课件视频：\n\n```bash\ndlazy chat --skill file-to-video \\\n  --prompt \"把这份讲义做成 18 分钟的课程视频，六个章节，\n每章配旁白和字幕，风格克制专业，用深墨蓝配琥珀的双色系统，\n章节之间加过渡卡，不要花哨转场\" \\\n  --files ./讲义.pptx\n```\n\n它内部走 Remotion，**文字是真排版不是生图**，中文清晰可控可改。\n\n**B. 静态板 + Remotion 排版** —— 没有现成讲义时，用 `recipes.md` D 组出背景板，文字在 Remotion 里排：\n\n```bash\ndlazy gpt-image-2 --input @payload/chapter.json --save ./slides/ch1.png\n```\n\n**C. `math-explainer-video` 模板** —— 公式推导、定理可视化类课程，KaTeX 排公式 + SVG 画图：\n\n```bash\ndlazy chat --skill math-explainer-video --prompt \"把贝叶斯公式的推导做成 3 分钟动画讲解\"\n```\n\n**永远不要让生图模型写课件上的字。** 中文必然乱码，英文经常拼错，而且改一个字就要重出整张图。生图只负责背景和意象，文字交给 Remotion。\n\n## ⑥ 装配\n\n**CLI 不做视频合成。** `dlazy` 是模型调用器，没有 merge / concat 命令。\n\n**下面的 ffmpeg 命令均已本地实跑验证**（用 lavfi 造的规格不一致素材：1248x704@25fps/24000Hz mono 的讲师段 + 1920x1080@30fps/44100Hz stereo 的课件段），语法和规格统一逻辑确认可用。真实素材的规格请按 ④ 末尾探到的实际值替换。\n\n### 串行拼接（形态 A）\n\n**各段规格互不相同，必须全重编码。** `-c copy` 和 `-c:v copy` 都不能用——带货版实测过，视频流会刷屏 `Non-monotonic DTS`，产物被塞进错误的容器，画面不花但音画不同步。\n\n```bash\nffmpeg -i clips/open.mp4 -i slides/body1.mp4 -i clips/trans1.mp4 -filter_complex \\\n\"[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25[v0];\\\n[1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25[v1];\\\n[2:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25[v2];\\\n[0:a]aformat=sample_rates=44100:channel_layouts=stereo[a0];\\\n[1:a]aformat=sample_rates=44100:channel_layouts=stereo[a1];\\\n[2:a]aformat=sample_rates=44100:channel_layouts=stereo[a2];\\\n[v0][a0][v1][a1][v2][a2]concat=n=3:v=1:a=1[v][a]\" \\\n-map \"[v]\" -map \"[a]\" -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \\\n-c:a aac -ar 44100 -ac 2 lesson.mp4\n```\n\n实测结果：零警告，三段 6 + 10 + 4 秒拼出 **20.04 秒**（误差 0.04），输出统一为 1920x1080 / 25fps / 44100Hz stereo。\n\n**用 `aformat` 不要用 `aresample`。** `aresample=44100` 只统一采样率，不统一声道数——讲师段是单声道、课件段是立体声，混着送进 `concat`。ffmpeg 7.0 实测能自动协商跑通，但这是版本行为，不保险。`aformat=sample_rates=44100:channel_layouts=stereo` 把两项都显式钉死，两种写法输出完全一致，没有理由用前者。\n\n段数变化时改三处：输入 `-i` 的个数、`[vN]/[aN]` 的编号、`concat=n=` 的数字。\n\n### 画中画（形态 C）\n\n课件铺满，讲师小窗叠在右下角。\n\n**矩形小窗**（推荐，最稳）：\n\n```bash\nffmpeg -i slides/body2.mp4 -i clips/talk2.mp4 -filter_complex \\\n\"[1:v]scale=480:-2,setsar=1[pip];[0:v][pip]overlay=W-w-48:H-h-48:shortest=1[v]\" \\\n-map \"[v]\" -map 1:a -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \\\n-c:a aac -ar 44100 -ac 2 pip.mp4\n```\n\n**`shortest=1` 不能省。** 实测：讲师视频 6 秒、课件 10 秒，不加这个参数输出会是 10 秒——后 4 秒讲师小窗**定格成一张照片**（overlay 默认 `repeatlast=1`），音轨同时静音，看起来像播放器卡死。加上后输出 6.02 秒，跟随讲师段结束。\n\n`-map 1:a` 取讲师的音频（画中画时是讲师在讲）。`scale=480:-2` 的 `-2` 让高度按比例自适应并保持偶数（libx264 要求）。\n\n**圆形小窗**（更像课程直播，实测可用）：\n\n```bash\nffmpeg -i slides/body2.mp4 -i clips/talk2.mp4 -filter_complex \\\n\"[1:v]scale=360:360:force_original_aspect_ratio=increase,crop=360:360,setsar=1,format=rgba,\\\ngeq=r='r(X,Y)':g='g(X,Y)':b='b(X,Y)':a='if(gt(pow(X-W/2,2)+pow(Y-H/2,2),pow(W/2,2)),0,255)'[pip];\\\n[0:v][pip]overlay=W-w-48:H-h-48:shortest=1[v]\" \\\n-map \"[v]\" -map 1:a -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \\\n-c:a aac -ar 44100 -ac 2 pip_circle.mp4\n```\n\n`geq` 逐像素算 alpha，**比矩形版慢得多**。长视频建议先用矩形版对好时间轴，最后再换圆形出一次。\n\n圆形裁切要求底图下巴留足余量，否则圆一裁下巴就没了——这是 `recipes.md` 配方 13 存在的原因。\n\n### 或者交给沙箱模板\n\n需要字幕、章节标题、转场动画时，比手写 ffmpeg 省事：\n\n```bash\ndlazy chat --skill file-to-video \\\n  --prompt \"把这些素材装配成一节 20 分钟的课程视频：open.mp4 开场，\n之后六个章节的课件段与转场讲师段交替，end.mp4 结尾，全片加中文字幕，\n章节开头加标题卡\" \\\n  --files ./clips/*.mp4 ./slides/*.mp4\n```\n\n沙箱返回项目 id，后续用 `dlazy chat --project <id> --prompt \"...\"` 继续调整。\n\n## 一次性跑完的脚本骨架\n\n**中文一律走 JSON 文件，不要用 shell 变量。** 见 `troubleshooting.md` 的\"编码陷阱\"——用 `$(cat ...)` 拼中文 prompt 会静默产生乱码，命令照样返回 `ok: true`，出来的东西跟你要的毫无关系。\n\n```bash\n#!/usr/bin/env bash\nset -e\nmkdir -p lecturer audio clips slides payload\n\n# 底图整门课只做一次，做完注释掉\n# dlazy gpt-image-2 --input @payload/base.json --batch 4 --save ./lecturer/11-third.png\n# dlazy gpt-image-2 --images ./lecturer/11-third.png --input @payload/derive-full.json --save ./lecturer/12-full.png\n\n# 露脸段：配音 + 驱动\nfor seg in open trans1 trans2 trans3 trans4 trans5 trans6 end; do\n  dlazy qwen-tts --input @payload/tts-$seg.json --save ./audio/$seg.wav\ndone\n\ndlazy jimeng-omnihuman-1.5 --images ./lecturer/12-full.png \\\n  --audio ./audio/open.wav --input @payload/drive.json \\\n  --resolution 1080p --save ./clips/open.mp4\n\nfor seg in trans1 trans2 trans3 trans4 trans5 trans6; do\n  dlazy jimeng-omnihuman-1.5 --images ./lecturer/11-third.png \\\n    --audio ./audio/$seg.wav --input @payload/drive.json \\\n    --resolution 720p --save ./clips/$seg.mp4\ndone\n\ndlazy jimeng-omnihuman-1.5 --images ./lecturer/12-full.png \\\n  --audio ./audio/end.wav --input @payload/drive.json \\\n  --resolution 1080p --save ./clips/end.mp4\n\n# 正文段：写满 512 字符，一次调用顶四次\nfor i in 1 2 3 4 5 6; do\n  dlazy qwen-tts --input @payload/tts-body$i.json --save ./audio/body$i.wav\ndone\n\n# 课件与装配交给沙箱模板（CLI 不做合成）\necho \"露脸段与配音已就绪，接下来跑 ⑤ 与 ⑥\"\n```\n\n所有 JSON 用 **UTF-8** 保存。`payload/drive.json` 就一行：\n\n```json\n{ \"prompt\": \"人物自然讲解，幅度克制，偶尔轻微点头，身体基本不动\" }\n```\n\n跑之前先在每条命令后加 `--dry-run` 走一遍，确认参数和积分预估。一节课十几次驱动调用，参数写错一个字母就是几百积分。\n\nFile v1.0.16:recipes.md\n\n# 底图配方库 · 知识付费讲师数字人\n\n16 条配方。A~C 组是讲师人像，D 组是课件视觉素材。每条都是可直接粘贴执行的完整命令。\n\n## 使用前必读\n\n**实测状态。** 本库的**参数**全部经源码核对（`config/models/gpt-image-2.ts` 与 `jimeng-omnihuman-1-5.ts` 的 zod schema 与 costs 函数），尺寸枚举、字数上限、计费系数可以放心用。\n\n**已实跑并逐张核对的三条**（2026-08-28，各跑一次一次命中，未重试）：\n\n| 配方 | 核对结论 |\n|---|---|\n| 01 · 纯色抠像位 | 背景纯色无渐变、发丝边缘锐利可抠，人物居中。裁切位比 prompt 写的\"胸口\"略低，不影响画中画使用 |\n| 11 · 右三分之一构图 | 人物中轴命中约 75%，左侧三分之二完全空旷、明度均匀，可直接叠课件。**\"百分之七十五\"这个写法确实有效** |\n| 14 · 章节封面板 | 无任何假文字混入（这条是本库最容易翻车的），三色配色与留白区都符合 |\n\n驱动链路也已端到端跑通：配方 11 底图 → `qwen-tts` → `jimeng-omnihuman-1.5 --resolution 720p` → 出片。\n\n**其余 13 条仍未实跑。** 第一次用时加 `--batch 4` 并逐张检查，特别是\"注意\"里标出的高风险项。发现偏差请回写到对应配方下面，这个库要靠使用积累。\n\n**配方结构。** 每条 prompt 按同一骨架写，改的时候按段改，不要整段重写：\n\n```\n身份气质 → 妆造服装(材质) → 姿态手部 → 表情眼神 → 景别构图(焦段/机位/留白区)\n→ 背景景深 → 光线方案(主光/补光/光比) → 色彩基调 → 画质质感 → 驱动约束\n```\n\n比带货版多出的是**留白区**——课程画面要给课件让位置，这一段决定了这张底图能不能直接用。\n\n最后那段**驱动约束**是 A~C 组共有的，删了就容易驱动失败：\n\n> 单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\n\nD 组不是人像，没有这一段。\n\n**尺寸速记。** 课程横屏一律 `--size 3840x2160`。计费不看尺寸（只看 `--quality` 和有无参考图），所以 4K 与 `2048x1152` 同价 37 积分，直接用 4K。**别写成 `2160x3840`**，那是竖屏。\n\n**省积分替代。** 主命令用 `gpt-image-2 --quality high`（37 积分），中文语境理解最准。预算敏感时换 `seedream-5.0`（4K 仅 **8 积分**）：\n\n```bash\ndlazy seedream-5.0 --prompt \"<同一条配方 prompt>\" --size 16:9 --resolution 4k --save ./lecturer/base.png\n```\n\n本库配方长度控制在 **500 字符以内**，卡在 `seedream-5.0` 的上限之内，可以原样粘过去。\n\n**同一人设的三个机位必须派生，不能各自生成。** 配方 11 / 12 / 13 是一门课的三个机位。先用 11 出底图存档，12 和 13 用 `--images` 从它派生（见每条的\"派生命令\"），否则你会得到三个长得不一样的老师。派生时积分从 37 涨到 **60**。\n\n---\n\n## A 组 · 讲台场景\n\n按课程调性选一条。\n\n### 01 · 纯色抠像位 ⭐ 画中画首选\n\n**适用**：要把讲师做成画中画小窗叠在课件上。纯色背景便于后期抠像或直接圆形遮罩。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 34 岁左右的亚洲女性课程讲师，气质专业亲和可信，妆容干净自然的职业淡妆，豆沙色哑光唇色，肤质自然真实保留皮肤纹理，不做过度磨皮。发型为黑色及肩直发梳理整齐，发丝边缘清晰锐利与背景分离明确。上身穿雾霾蓝色圆领针织衫，面料织纹细腻，剪裁合身简洁，无任何图案文字logo。姿态为站立正面朝向镜头，双肩放松水平，双手自然垂放在身体两侧完全不入镜。表情为温和的浅笑，嘴角自然，眼神平视镜头专注有交流感。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物居中，画面下缘裁切在胸口位置。背景为完全均匀的浅灰蓝色纯色无缝背景，无任何渐变纹理道具文字，人物与背景明度差明显便于边缘分离。光线方案为正面双侧对称柔光箱主光加顶部发丝光，光比 1.2:1，面部受光极其均匀无阴影，背景独立布光亮度均匀一致。整体色彩基调为干净的低饱和冷灰调。画质为专业摄影棚商业人像，细节锐利，发丝边缘干净。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/01-keyable.png\n```\n\n**注意**：背景**必须是纯色不能有渐变**——渐变背景抠像时边缘会发脏。`--quality high` 在这条上不能降，发丝边缘是抠像成败的关键。\n\n不推荐用纯绿幕：omnihuman 驱动后的视频经过压缩，绿边溢色比浅灰蓝更难处理。圆形遮罩方案见 `pipeline.md` ⑥。\n\n---\n\n### 02 · 书房知识博主\n\n**适用**：人文、商业、心理、写作类课程。知识付费最经典的场景，信任感最好建立。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 38 岁左右的亚洲男性知识课程讲师，气质儒雅沉稳有学识感，短发梳理整齐两鬓有少量自然白发，面部有真实的年龄纹理与皮肤质感不做美颜。上身穿深灰蓝色羊毛开衫内搭浅灰色圆领衫，面料质感厚实有织纹，剪裁松弛得体。姿态为坐姿正面朝向镜头，背部挺直微微前倾表现投入感，双手轻放在桌面边缘仅露出手腕不入画。表情为平和从容的微笑，眼神温和平视镜头有沉稳的说服力。景别为中近景半身像，50mm 标准镜头，机位与视线齐平，人物位于画面右侧三分之一处，左侧三分之二留出大面积干净的背景区域。背景为温暖的书房环境，身后是深胡桃木色书架与排列整齐的书籍脊背，全部被大光圈虚化成柔和的暖色块，书脊上无任何可读文字。光线方案为侧前方窗户自然光作主光柔和漫射，另一侧暖色台灯补光，光比 2:1，面部有自然明暗过渡。整体色彩基调为低饱和的暖棕木质调。画质为自然光人文肖像摄影，真实细腻有空气感。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/02-study.png\n```\n\n**注意**：书架是模型最爱自作主张写字的地方。prompt 已写\"书脊上无任何可读文字\"，出图后仍要**放大检查书脊**——生成的假书名多半是乱码或不存在的英文，糊在成片里很掉档次。\n\n---\n\n### 03 · 教室白板\n\n**适用**：K12 学科辅导、考证培训、技能教学。有板书感，天然适合叠加公式和要点。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 32 岁左右的亚洲女性教师，气质干练清爽有亲和力，妆容为明亮干净的职业淡妆，肤质真实自然保留纹理。发型为黑色长发扎成利落低马尾，额前无碎发遮挡。上身穿浅杏色西装外套内搭白色衬衫，面料挺括有型，剪裁专业无任何图案文字。姿态为站立正面朝向镜头，身体略微侧向左侧，双肩放松，双手自然垂放身侧不入镜。表情为自信明朗的微笑，眉眼舒展，眼神平视镜头有讲解的专注感。景别为中近景半身像，50mm 镜头，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为大面积空白留白区域。背景为现代明亮的教室环境，身后是一整面干净的白色白板，白板上完全空白无任何字迹图形，白板边缘与浅灰墙面有轻微虚化。光线方案为教室顶部均匀漫射光加正面柔光补光，光比 1.3:1，面部通透明亮，白板受光均匀无反光光斑。整体色彩基调为明亮清爽的高明度中性调。画质为高清教育机构宣传摄影，清晰专业。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/03-classroom.png\n```\n\n**注意**：白板必须**完全空白**。模型很爱在白板上画公式和涂鸦，出来一定是乱码。空白白板才是最好的画布——后期用 Remotion 在上面排真正的板书，字才是清楚的。\n\n白板反光是另一个风险，prompt 已写\"无反光光斑\"，出图检查白板中央有没有一块高光。\n\n---\n\n### 04 · 演播室专业讲台\n\n**适用**：企业内训、认证课程、高客单价专业课。正式感最强。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 40 岁左右的亚洲男性资深讲师，气质权威沉稳有分量感，短发利落，面部轮廓清晰有真实的皮肤纹理与轻微胡茬阴影，不做美颜处理。上身穿深藏青色单排扣西装内搭白衬衫，无领带，面料为哑光精纺羊毛质感挺括，剪裁合身无任何徽章文字标识。姿态为站立正面朝向镜头，身姿挺拔肩部平稳，双手自然垂放身侧不入镜。表情为沉稳克制的微表情，嘴角轻收，眼神坚定平视镜头具有可信度与专业权威感。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧偏中，左侧留出充足的深色背景区域。背景为专业演播室环境，深灰蓝色渐变背景墙，远处有一条水平的冷白色灯带光晕，整体大幅虚化成深色调，无任何可读文字或标识。光线方案为侧前方 45 度柔光主光塑造面部立体感，主光充足使面部为画面最亮区域，背后加冷白色轮廓光勾勒发丝与肩线形成主体分离，光比 1.5:1，暗部扎实但不压过面部。整体色彩基调为低饱和的深蓝冷调。画质为高端商业演播级人像摄影，锐利有质感。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/04-studio.png\n```\n\n**注意**：深色调容易让模型把面部整体压暗，面部太暗会削弱驱动出的口型细节。prompt 已显式写\"面部为画面最亮区域\"，出图仍偏暗就把光比降到 1.3:1 重出。\n\n西装上的徽章是幻觉重灾区——已写\"无任何徽章文字标识\"，仍要检查胸口和袖口。\n\n---\n\n### 05 · 咖啡厅轻知识\n\n**适用**：软技能、生活方式、副业、个人成长类课程。降低距离感。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 29 岁左右的亚洲女性讲师，气质放松真诚像朋友聊天，妆容极淡近乎素颜，唇色为自然血色，皮肤自然真实可见纹理细节不做过度修饰。发型为黑色微卷及肩发随意自然带一点生活感的凌乱。上身穿浅燕麦色宽松棉质针织衫，面料纹理清晰有自然褶皱，袖口随意挽起。姿态为坐姿正面朝向镜头，背部放松靠在椅背上，双手轻放在桌面下方不入镜。表情为放松的浅笑带真诚的分享感，眼神温和平视镜头。景别为中近景半身像，50mm 镜头，机位略低于视线约 5 度营造平等对话感，人物位于画面左侧三分之一，右侧三分之二留出虚化的环境背景区。背景为温馨的咖啡馆一角，可见浅木色桌面边缘、暖黄色吊灯的模糊光斑、以及窗外的柔和自然光，背景被大光圈虚化成柔和色块，无任何可读文字招牌。光线方案为侧前方大面积窗户自然光作主光柔和漫射，另一侧墙面反光补光，光比 2:1，面部有自然明暗过渡呈现真实环境光感。整体色彩基调为低饱和的暖米调通透舒适。画质为自然光生活摄影质感真实细腻。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/05-cafe.png\n```\n\n**注意**：这是本库唯一**人物在左、留白在右**的配方——轻知识课程的课件通常更少更简，右侧留白放几个关键词就够。要做成满屏课件的课，换配方 11。\n\n咖啡杯是高频幻觉物，如果出图里人物手边出现杯子，检查它有没有挡住下巴。\n\n---\n\n### 06 · 工位实操\n\n**适用**：软件教学、办公技能、设计课、编程入门。讲师与屏幕同框，天然贴合录屏课。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 30 岁左右的亚洲男性职业讲师，气质专业干净务实，短发清爽整齐，戴细金属框眼镜，面部有真实皮肤纹理不做美颜。上身穿浅灰色纯色圆领卫衣，面料质感柔软有自然褶皱，剪裁简洁无任何图案logo文字。姿态为坐姿正面朝向镜头，背部挺直坐在人体工学椅上，双手轻放在桌沿边缘仅露出手腕不遮挡身体。表情为专注平和的微笑，眼神平视镜头有讲解的耐心感。景别为中近景半身像，50mm 镜头，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为虚化的桌面与屏幕区域留白。背景为整洁的现代办公工位，可见桌面上一台侧向摆放的显示器背面轮廓、一个白色马克杯、以及浅灰色墙面，全部大幅虚化成柔和色块，屏幕不朝向镜头不显示任何内容，无任何可读文字。光线方案为正面偏左柔光主光加顶部均匀漫射补光，光比 1.4:1，面部通透明亮眼镜片无强反光遮挡眼睛。整体色彩基调为干净的中性浅灰调。画质为专业职场环境人像摄影，清晰自然。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/06-desk.png\n```\n\n**注意**：**眼镜是驱动的风险项。** 镜片上的反光块会让 omnihuman 判断眼部区域出错，出现眼神呆滞或闪烁。prompt 已写\"镜片无强反光遮挡眼睛\"，出图后放大看眼睛——只要镜片上有一块白，就重出。\n\n不戴眼镜的版本更稳。这条配方删掉\"戴细金属框眼镜\"即可。\n\n---\n\n## B 组 · 学科人设\n\n按学科选。这一组的合规风险高于 A 组，先读每条的\"注意\"。\n\n### 07 · 学术专家\n\n**适用**：需要学术背书的课程（历史、科普、医学科普、法律常识）。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 45 岁左右的亚洲男性学者型讲师，气质沉静博学有书卷气，短发梳理整齐两鬓有明显自然白发，面部有清晰的年龄纹理法令纹与真实皮肤质感，完全不做磨皮美化。上身穿深灰色羊毛西装外套内搭浅蓝色衬衫，面料哑光有织纹，剪裁传统得体，衣领与胸口无任何徽章证书文字标识。姿态为坐姿正面朝向镜头，背部端正微微前倾，双手交叠轻放在桌面上仅露出手腕不入画。表情为平和内敛的浅笑，眼神沉稳温和平视镜头具有学者的可信度。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧三分之一，左侧留出大面积虚化背景。背景为安静的学术书房，身后是深色实木书柜与整齐书籍的模糊轮廓，全部虚化成柔和深色块，书脊与墙面上无任何可读文字或悬挂的证书奖状。光线方案为侧前方柔和窗光作主光，另一侧低强度补光，光比 2:1，面部明暗过渡自然有立体感。整体色彩基调为低饱和的深棕墨绿调沉稳内敛。画质为人文纪实肖像摄影，真实有质感年龄细节丰富。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/07-scholar.png\n```\n\n**注意（合规）**：prompt 里两次写了\"无任何证书奖状徽章\"，**这不是冗余，是硬要求**。模型极爱在学者背后墙上挂几幅证书、在胸口别个徽章，上面的机构名全是编造的。用一个挂着假证书的形象讲课，是虚构资质，平台会判违规。\n\n**白大褂、诊室、实验室不要用**——非持证主体使用医疗形象是明确红线。医学科普课就用这条的普通西装版本。\n\n---\n\n### 08 · 职场导师\n\n**适用**：管理、销售、职业规划、面试辅导类课程。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 36 岁左右的亚洲女性职场导师，气质干练自信有领导力，妆容为精致克制的职业妆，裸粉色唇色，肤质真实自然保留细节。发型为黑色及肩内扣短发打理利落。上身穿米白色西装外套内搭同色系丝质衬衫，面料垂坠有质感，剪裁利落专业，无任何图案文字。姿态为站立正面朝向镜头，肩背挺拔重心平稳，双手自然垂放身侧不入镜。表情为沉着自信的浅笑，眼神明亮平视镜头有说服力与亲和力的平衡。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为虚化的都市办公背景留白。背景为现代写字楼室内空间，可见落地窗的柔和天光、远处模糊的城市天际线轮廓与浅灰色墙面，全部大幅虚化成明亮柔和的色块，无任何可读文字或品牌标识。光线方案为侧前方落地窗自然光作主光柔和明亮，另一侧白墙反光补光，光比 1.5:1，面部通透有立体感。整体色彩基调为高明度低饱和的米白灰调，干净高级。画质为高端商业人像摄影，细节锐利质感真实。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/08-mentor.png\n```\n\n**注意**：落地窗强光容易在面部形成明暗分界。出图后看鼻梁两侧亮度差，超过两档就把光比降到 1.3:1 重出——驱动时明暗分界线会随头部转动出现撕裂感。\n\n---\n\n### 09 · 语言教师\n\n**适用**：英语、日语、小语种、口语陪练类课程。要亲和、明亮、有耐心感。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 27 岁左右的亚洲女性语言教师，气质亲切明朗有耐心感，妆容清透自然的淡妆，珊瑚粉色唇色气色好，皮肤自然真实有健康光泽保留纹理。发型为黑色中长发自然垂落在肩前，发丝清晰有光泽。上身穿浅蓝色棉质衬衫，面料柔软有自然褶皱，剪裁休闲舒适无任何图案文字。姿态为站立正面朝向镜头，肩膀放松自然，双手自然垂放身体两侧不入镜。表情为温暖开朗的微笑露出自然的笑容，眉眼弯起，眼神明亮平视镜头充满鼓励感。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为明亮干净的留白区域。背景为明亮简洁的浅米白色墙面，墙上有一小片虚化的绿植叶影，整体极简通透，无任何可读文字或装饰图案。光线方案为正面偏左大面积柔光主光，右侧反光板补光，光比 1.3:1，面部受光均匀明亮通透，眼中有清晰柔和的眼神光，背景比人物亮半档营造轻盈感。整体色彩基调为高明度的清爽浅蓝米白调。画质为清新自然的商业人像摄影，皮肤质感真实通透。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/09-language.png\n```\n\n**注意**：语言课的口型是内容的一部分（学生要看发音），**这条务必用 1080p 驱动不要降 720p**，且优先用配方 13 的近景机位做发音示范段。\n\n\"露出自然的笑容\"可能出成露齿笑——露齿的底图驱动时口型起始状态不自然。要闭唇笑就把这句改成\"嘴角自然上扬的闭唇微笑\"。\n\n---\n\n### 10 · 技术讲师\n\n**适用**：编程、数据、AI、运维类课程。冷调专业，与代码课件调性一致。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 31 岁左右的亚洲男性技术讲师，气质理性专注不修边幅但干净，短寸黑发，面部有真实的胡茬阴影与皮肤纹理完全不做美颜处理。上身穿深灰色纯色圆领 T 恤外搭黑色薄开衫，面料质感朴素，无任何 logo 图案文字。姿态为坐姿正面朝向镜头，背部微微放松地靠向椅背，双手轻放在桌沿仅露出手腕不遮挡身体。表情为平静专注的微表情，嘴角轻微收拢，眼神沉稳平视镜头有技术人的可信度。景别为中近景半身像，50mm 镜头，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为深色虚化留白区域。背景为极简的深色技术工作台环境，可见深灰色墙面、一条青蓝色氛围灯带的柔和光晕、以及一台侧向显示器的模糊边缘轮廓，屏幕不朝向镜头不显示任何内容，无任何可读文字。光线方案为侧前方 45 度柔光主光，主光充足使面部为画面最亮区域，背后加冷青色轮廓光勾勒发丝肩线形成主体分离，轮廓光不打到面部正面，光比 1.5:1。整体色彩基调为低饱和的冷灰青调，暗部扎实不发灰。画质为科技媒体级人像摄影，锐利有质感。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/10-tech.png\n```\n\n**注意**：冷色轮廓光对驱动是加分项（主体边缘清晰），但**别让彩色光上脸**——prompt 已写\"轮廓光不打到面部正面\"。青光打到脸颊会让口型区域的色彩判断出错。\n\n---\n\n## C 组 · 景别与机位\n\n一门课的三个机位。**从同一张底图派生，不要各自生成。**\n\n### 11 · 右三分之一构图 ⭐ 正文主力\n\n**适用**：全片 90% 的画面。人物在右，左侧三分之二放 PPT、代码、图表。\n\n这条是构图模板，人设部分从 A/B 组任选一条替换。以下用配方 02 的书房人设举例：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 38 岁左右的亚洲男性知识课程讲师，气质儒雅沉稳，短发整齐两鬓有自然白发，面部有真实年龄纹理不做美颜。上身穿深灰蓝色羊毛开衫内搭浅灰圆领衫，面料有织纹质感。姿态为坐姿正面朝向镜头，背部挺直，双手不入镜。表情为平和从容的微笑，眼神温和平视镜头。景别为中近景半身像，50mm 镜头，机位与视线齐平。构图为严格的右三分法：人物身体中轴位于画面从左至右百分之七十五的位置，人物只占据画面右侧三分之一区域，画面左侧三分之二为完全空旷的纯背景区没有任何物体道具，人物头顶距画面上缘留出适度空间。背景为温暖书房的虚化暖棕色调，左侧空旷区为均匀柔和的低对比度背景无任何细节与可读文字，便于后期在其上叠加图文内容。光线方案为侧前方柔和主光加另一侧补光，光比 1.8:1，面部明暗过渡自然，左侧空旷背景区受光均匀明度一致无光斑无阴影。整体色彩基调为低饱和暖棕调。画质为专业人像摄影真实细腻。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/11-third.png\n```\n\n**注意**：**\"百分之七十五\"这个具体数值不要删。** 只写\"人物在右侧\"，模型多半还是给你一个偏右一点的居中构图，留白不够放课件。写死百分比命中率明显更高。\n\n左侧留白区要**明度均匀无光斑**——上面叠白色文字时，背景有明暗变化会让文字某一段看不清。\n\n出图后拿把标尺量一下：人物左边缘到画面左缘的距离，应该占画面宽度的一半以上。不够就重出。\n\n---\n\n### 12 · 全画幅中近景（开场 / 结尾）\n\n**适用**：开场白和结尾总结。没有课件，讲师占据画面主体，建立连接感。\n\n**派生命令**（从配方 11 的底图派生，保住同一张脸）：\n\n```bash\ndlazy gpt-image-2 --images ./lecturer/11-third.png \\\n  --prompt \"保持画面中人物的面部特征发型服装完全一致，只改变构图与机位：人物身体中轴移到画面正中略偏左，人物在画面中的占比放大，景别为中近景半身像画面下缘裁切在胸口，人物头顶留出适度空间，背景保持同样的温暖书房虚化暖棕色调但两侧均衡分布，光线方案与色彩基调完全不变。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/12-full.png\n```\n\n**注意**：带 `--images` 时 `high` 档是 **60 积分**（无参考图是 37）。这是一次性成本，一门课只派生一次。\n\n派生出来后**把 11 和 12 并排看一眼**——如果脸有明显差异，重新派生而不是将就，观众对同一门课里讲师换脸极其敏感。\n\n---\n\n### 13 · 小窗特写（画中画）\n\n**适用**：叠在满屏课件右下角的圆形/圆角小窗。景别更近，小尺寸下仍能看清口型。\n\n```bash\ndlazy gpt-image-2 --images ./lecturer/11-third.png \\\n  --prompt \"保持画面中人物的面部特征发型服装完全一致，只改变景别：改为近景肩上半身像，85mm 中长焦大光圈，人物面部占画面高度约二分之一，人物居中，画面下缘裁切在肩部以下留出充足余量确保下巴与颈部完整不被裁切，背景保持同样色调但进一步虚化为均匀色块，光线与色彩基调完全不变。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/13-inset.png\n```\n\n**注意**：**\"下缘留出充足余量\"是关键。** 这张图后期要被圆形遮罩裁一刀，圆形会切掉四角——如果原图下巴离画面下缘太近，圆形一裁下巴就没了。\n\n不要比这个景别更近。裁到下巴以下不足一个下巴高度时，omnihuman 的下颌运动会穿帮。\n\n---\n\n## D 组 · 课件视觉\n\n这一组不是人像，**没有驱动约束段**，也不需要送去驱动。它们是第 ⑤ 层的静态素材。\n\n**统一原则：图里不要有任何文字。** 模型生成的中文字必然是乱码，英文也经常拼错。**文字一律留到 Remotion 里排**——那里的字才是清晰可控可改的。所有 D 组配方都写了\"无任何文字\"，别删。\n\n### 14 · 章节封面板\n\n**适用**：每章开头的过渡卡。留出标题排版区。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一张极简主义的课程章节封面背景图，画面为大面积的低饱和暖米白色渐变底，左侧三分之二为完全空旷的纯净留白区域没有任何元素，右侧三分之一有一组抽象的几何形状构成的装饰：几个不同大小的圆形与细线条以低对比度的浅灰蓝与浅陶土色叠放，形态克制有秩序感，边缘柔和。整体有细微的纸质颗粒纹理增加质感。构图平衡留白充足，视觉重心偏右，左侧留白区明度均匀一致便于叠加标题文字。画面中没有任何文字数字字母符号。整体色彩基调为低饱和的暖米白与浅陶土的克制配色，不超过三种颜色。画质为高端出版物级别的极简平面设计，干净精致有品味。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./slides/14-chapter.png\n```\n\n**注意**：出图后**逐个角落找文字**。模型在\"设计感\"图片里塞假英文单词的概率很高，一个糊掉的假单词会毁掉整张板的质感。\n\n---\n\n### 15 · 概念示意图\n\n**适用**：抽象概念的视觉隐喻，比干讲有效得多。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一张用于教学讲解的抽象概念示意图，画面中央为一组由细线条连接的几何节点构成的结构图形，节点为大小不一的圆形与方形，线条为均匀的细实线，整体呈现清晰的层级与连接关系，形态简洁克制有逻辑感。配色为深墨蓝色主体搭配琥珀色作为唯一的强调色标出其中一个关键节点，其余为浅灰色。背景为干净的浅米白色纯色底，四周留白充足。画面中没有任何文字数字字母标签。整体风格为高端科普读物的信息图设计，线条精准，视觉层次清晰，不使用任何立体阴影与渐变光效。画质为矢量风格的高清平面插图，边缘锐利干净。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./slides/15-concept.png\n```\n\n**注意**：这条本质是在赌模型的构图直觉，**命中率是本库最低的**，建议 `--batch 4` 起。\n\n真正需要精确结构的示意图（流程图、架构图），不要用生图——用 Remotion 手写 SVG，或者走 `math-explainer-video` 模板。生图适合的是\"感觉对了就行\"的意象图。\n\n---\n\n### 16 · 课程封面\n\n**适用**：课程详情页缩略图、专栏封面。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一张知识付费在线课程的封面背景图，画面为深墨蓝到深青色的低饱和渐变底，右侧三分之一有一组抽象的光影元素：柔和的琥珀色光晕与几条细的对角线条交错，营造出通透的空间纵深感，元素克制不喧宾夺主。左侧三分之二为纯净的深色留白区域，明度均匀一致，便于叠加课程标题与讲师信息。整体有细微的颗粒质感避免数字平涂感。画面中没有任何文字数字字母人物与具象物体。整体色彩基调为深墨蓝配琥珀的高级双色系统，不超过三种颜色。画质为高端商业视觉设计，质感精致有专业感。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./slides/16-cover.png\n```\n\n**注意**：封面是唯一**必须放文字**的地方，但仍然在 Remotion 或设计软件里排——这张图只提供背景。\n\n各平台封面比例不一：小鹅通专栏封面常见 16:9，B 站是 16:10，公众号是 2.35:1。用 4K 16:9 出图再按需裁，比重出省事。\n\n---\n\n## 出图检查清单\n\nA~C 组的每一张，进入驱动前逐项过：\n\n- [ ] 单人，没有第二张脸（背景照片、海报、镜子里的人都算）\n- [ ] 正脸或侧脸 ≤ 20°\n- [ ] 嘴与下巴无遮挡，下巴完整没被裁切\n- [ ] 手不在胸口以上，或干脆不入镜\n- [ ] 光比 ≤ 2:1，面部无斑驳阴影、无硬分界线\n- [ ] 眼镜片上没有反光白块\n- [ ] 画面里没有任何可读文字（书脊、白板、证书、徽章）\n- [ ] 留白区明度均匀，够放课件\n\n任何一项不过就重出。带着一张不合格的底图往下走，后面每一段驱动的积分都是白花的。\n\nFile v1.0.16:skill-card.md\n\n## Description:\n\nGuides creators through making landscape course videos with a reusable digital lecturer, portrait recipes, and a slide-first production workflow.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCourse creators and training teams use this skill to plan, script, and assemble paid lessons or internal training videos featuring a consistent digital lecturer alongside slides.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Course materials and generated media are sent to dLazy services.\n\nMitigation: Review the provider's data handling terms and avoid uploading materials that cannot be shared externally.\n\nRisk: A dLazy API key may be used to access paid services.\n\nMitigation: Keep API keys private and review expected usage and credits before running batch jobs.\n\n## Reference(s):\n\n- [Course Avatar skill on ClawHub](https://clawhub.ai/dlazyai/skills/dlazy-course-avatar)\n- [dLazy homepage](https://dlazy.com)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration instructions]\n\n**Output Format:** [Markdown with prompts and shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Provides portrait recipes, lesson production steps, and cost-planning guidance; video generation requires dLazy services.]\n\n## Skill Version(s):\n\n1.0.16 (source: server-resolved release metadata; skill frontmatter lists 1.0.0)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.16:troubleshooting.md\n\n# 排错与合规\n\n## 驱动失败对照表\n\n讲师\"不对劲\"时，**先回头看底图**，90% 的问题在那一步就注定了。\n\n| 症状 | 真因 | 修法 |\n|---|---|---|\n| 嘴型飘、对不上音 | 底图侧脸角度过大 | 重出底图，正脸或侧脸 ≤ 20° |\n| 嘴部糊成一团 | 面部像素太少 | 换近一档景别；语言课务必用 1080p |\n| 眼神呆滞或闪烁 | **底图眼镜片上有反光白块** | 重出，或直接去掉眼镜 |\n| 下巴穿帮、脖子扭曲 | 底图下巴被裁切 | 底图必须完整露出下巴与颈部 |\n| 手部出现鬼影 | 底图里手在胸口以上 | 手放桌沿以下，或不入镜 |\n| 驱动到了错误的人 | 底图有第二张脸（背景海报、照片） | 背景不能有任何人脸 |\n| 面部忽明忽暗 | 底图有斑驳阴影（百叶窗、树影） | 补光消除斑驳，或换纯色背景 |\n| 表情僵硬像蜡像 | 底图过度磨皮，失去皮肤纹理 | prompt 加\"真实皮肤纹理，不做过度磨皮\" |\n| 叠上课件后文字看不清 | **底图留白区有明暗变化或光斑** | 重出，留白区要明度均匀 |\n| 圆形小窗裁掉了下巴 | 底图下缘余量不足 | 用配方 13，下缘留足余量 |\n\n后三条是课程版特有的，带货版不会遇到。\n\n## 报错对照表\n\n| Code | 含义 | 处理 |\n|---|---|---|\n| 400 | 参数非法 | 多半是尺寸写法错了或 prompt 超上限，见下 |\n| 401 | `unauthorized` | `dlazy login` 或 `dlazy auth set <key>` |\n| 501 | 缺必填参数 | `error: required option '--prompt' not specified` |\n| 502 | 本地文件读不到 | 检查路径，Windows 下注意反斜杠转义 |\n| 503 | `insufficient_balance` | 充值：https://dlazy.com/dashboard/organization/settings?tab=credits |\n| 504 | 异步任务失败 | 看 `=== Generation Failed ===` 后面的真实原因 |\n\n### 400 最常见的三种\n\n**横竖屏写反了。** 课程版最高频的错误：\n\n```\n✅ --size 3840x2160    横屏 16:9 4K\n❌ --size 2160x3840    竖屏 9:16（这是带货版的）\n```\n\n**写反不会报错**——两个都是合法枚举值。你会拿到一张竖图，然后在装配那一步才发现，中间的驱动积分已经花掉了。从带货技能复制命令过来时，这一处必须改。\n\n`1536x1024` 是 **3:2 不是 16:9**，做课程封面会被平台裁掉两边。\n\n**提示词超上限。** 整次请求被拒，不是截断，积分不退：\n\n| 上限 | 模型 |\n|---|---|\n| 300 | `jimeng-omnihuman-1.5`（且可选） |\n| 500 | `seedream-5.0` 全系、`jimeng-t2i` |\n| 512 | `qwen-tts` |\n| 1300 | `qwen-image-2-pro` |\n| 2000 | `gpt-image-2`、`banana-pro`、`banana2` |\n\n正文段写满 512 是本技能推荐的省钱做法，**但别写超**。留 10 字符余量，标点也算字符。\n\n**尺寸写法串了模型。** 六种互不通用：\n\n```\ngpt-image-2      --size 3840x2160        （像素，用 x，固定枚举）\nqwen-image-2-pro --size 2688*1536        （像素，用 *）\nseedream-5.0     --size 16:9 --resolution 4k\nbanana-pro       --aspectRatio 16:9 --imageSize 4K   （驼峰）\nseedance-2.5     --ratio 16:9 --resolution 1080p\nkling-v3         --aspect_ratio 16:9     （下划线）\n```\n\n**音频超时长上限。** `jimeng-omnihuman-1.5`：1080p ≤ 30 秒，720p ≤ 60 秒。超了直接拒。正文段的长音频**不要送进驱动**——它们本来就不该驱动。\n\n## 中文 prompt 的编码陷阱（重要）\n\n**最隐蔽也最贵的坑。** 症状：命令返回 `ok: true`，但出来的图跟 prompt 毫无关系——通常是一张\"通用美女写真\"，你要的书房、白板、留白区全部被无视。\n\n原因不是模型跑偏，是 **prompt 在传到 API 之前就被编码破坏成乱码了**。模型收到乱码，只能靠残存字节碎片自由发挥，回落到训练集里最高频的人像模板。\n\n最常见的触发方式是在 Windows 上用脚本拼命令行：\n\n```bash\n# ❌ 危险：Python 在 Windows 下 stdout 默认走 GBK，\n#         bash 按 UTF-8 读，中文全变乱码，且不报任何错\nP=$(python -c \"print(open('prompt.txt',encoding='utf-8').read())\")\ndlazy gpt-image-2 --prompt \"$P\" ...\n```\n\n**正确做法：用 `--input` 传 UTF-8 的 JSON 文件，让 prompt 不经过 shell。**\n\n```bash\ncat > payload.json <<'EOF'\n{\"prompt\": \"一位 38 岁左右的亚洲男性知识课程讲师...\", \"size\": \"3840x2160\", \"quality\": \"high\", \"imageFormat\": \"png\"}\nEOF\ndlazy gpt-image-2 --input @payload.json --save ./lecturer/base.png\n```\n\n`--input` 每个工具都支持，flag 值可以和 JSON 混用（flag 优先）。**课程是批量生产，一律走这条路。**\n\n**自检方法**：出图明显跑偏时，先别改 prompt——把同一段中文直接内联到命令行手动跑一次。内联能出对图、脚本出错图，就是编码问题，不是提示词问题。\n\n乱码 prompt 也可能触发 `safety_violations=[sexual]`，因为破碎的字节序列会被安全分类器误判。看到这个错误先查编码，再怀疑用词。\n\n## 长课程批处理陷阱\n\n一节课十几段、一门课几十节，这些问题带货版（单条 3 段）根本遇不到。\n\n**1. 文件名用两位数补零。**\n\n```\n❌ body1 body2 ... body10 body11     字典序排成 body1, body10, body11, body2\n✅ body01 body02 ... body10 body11   顺序正确\n```\n\n`ffmpeg -i` 的顺序、`for f in *.mp4` 的展开顺序都按字典序。**一节课的章节被打乱顺序而你没发现**，是这条流水线最尴尬的失败方式。\n\n**2. 时长会累积漂移。**\n\n带货版实测：omnihuman 成片比输入音频长 **0.1~0.2 秒**。单段无所谓，但一节课 8 段露脸累积下来是 **0.8~1.6 秒**。\n\n如果你的字幕时间轴是按讲稿字数估算的，**到片尾会明显对不上**。两个解法：\n\n- 装配前用 `ffprobe` 读每段的**实际时长**，用实测值排时间轴，不要用估算值\n- 或者让 `file-to-video` 模板处理字幕，它按真实素材时长对齐\n\n```bash\nfor f in clips/*.mp4; do\n  echo -n \"$f \"; ffprobe -v error -show_entries format=duration -of csv=p=0 \"$f\"\ndone\n```\n\n**3. 断点续跑。**\n\n十几次驱动调用，跑到第 9 段失败，不该从头再来（前 8 段的积分已经花了）。脚本里加存在性判断：\n\n```bash\nfor seg in trans1 trans2 trans3 trans4 trans5 trans6; do\n  [ -f \"./clips/$seg.mp4\" ] && { echo \"skip $seg\"; continue; }\n  dlazy jimeng-omnihuman-1.5 --images ./lecturer/11-third.png \\\n    --audio ./audio/$seg.wav --input @payload/drive.json \\\n    --resolution 720p --save ./clips/$seg.mp4\ndone\n```\n\n**4. 跨节次的一致性漂移。**\n\n一门课录到第 12 节，你可能已经忘了当初用的是哪个音色、哪张底图。**开课时就把这几项写进项目根目录的配置文件**，每节课从它读：\n\n```json\n{\n  \"lecturer_base\": \"./lecturer/11-third.png\",\n  \"lecturer_full\": \"./lecturer/12-full.png\",\n  \"voice\": \"Ethan\",\n  \"drive_prompt\": \"人物自然讲解，幅度克制，偶尔轻微点头，身体基本不动\",\n  \"resolution_talk\": \"1080p\",\n  \"resolution_trans\": \"720p\"\n}\n```\n\n底图文件**要备份**。丢了就再也回不到同一张脸，整门课的形象断档。\n\n## 省积分策略\n\n按性价比排序：\n\n1. **砍露脸时长。** 驱动占 95%。这是唯一数量级的杠杆——串行形态比全程画中画省 10 倍，细节见 `pipeline.md` 开头。\n2. **转场段降 720p。** 15 积分/秒 vs 23，省 35%。转场只有 10 秒且景别偏侧，观众看不出。开场结尾留 1080p。\n3. **正文 TTS 写满 512 字符。** 固定 6 积分/次，写满是 10 次调用，切碎是 38 次，白花 168 积分。\n4. **底图整门课复用。** 157 积分摊到 30 节，每节 5 积分。\n5. **章节转场卡替代部分露脸。** 六次转场留三次露脸，其余用纯课件动画。\n6. **先 `--dry-run`。** 一节课十几次调用，参数写错一个字母就是几百积分。\n\n**不要在底图上省。** 底图差 → 驱动失败 → 整节课重跑。这笔账永远不划算。\n\n## 教培合规红线\n\n**这一套跟带货完全不同，别把带货版的合规清单套过来。** 教育培训广告受《广告法》第二十四条专门规制，比一般商品广告严得多。\n\n**四条硬禁止**（第二十四条）：\n\n1. **不得对升学、通过考试、获得学位学历或合格证书作保证性承诺**，也不得对培训效果作明示或暗示的保证。\n   - 禁：「包过」「保过」「一次上岸」「学完必会」「通过率 98%」「不过退费」（作为效果承诺时）\n2. **不得明示或暗示有考试机构、其工作人员、命题人员参与培训。**\n   - 禁：「命题组老师授课」「内部押题」「考试院背景」\n3. **不得利用科研单位、学术机构、教育机构、行业协会、专业人士、受益者的名义或形象作推荐、证明。**\n   - 这条对数字人**尤其致命**：用数字人扮演\"往期学员\"讲述学习效果，是用受益者形象作证明，**同时还是虚构的**，双重违规。\n   - 学员证言、前后成绩对比、\"我用了三个月从 60 分到 130 分\"——全部禁止。\n4. **虚构师资与资质。** 数字人讲师不得被包装成\"某某大学教授\"「二十年教龄名师」等未经证实的身份。`recipes.md` 配方 07 反复强调\"无任何证书奖状徽章\"就是为此——模型会自己编造机构名挂在墙上。\n\n**视觉红线**：\n\n- 白大褂、诊室、实验室 → 非持证主体禁用\n- 证书、奖状、胸牌、机构 logo → 出图后逐项检查并删除，模型编造的机构名是虚构资质\n- 背景里的可读文字 → 所有配方都写了\"无任何可读文字\"，别删这句\n\n**面向未成年人的额外限制**：学科类校外培训的广告投放在多地有专门限制，面向学龄前儿童的线上培训被明确禁止。做 K12 内容前先确认当地现行规定，这块政策变动频繁。\n\n**AI 生成内容标识**：我国已施行 AI 生成合成内容标识要求，数字人讲师视频属于典型的 AI 生成合成内容。发布时按平台要求勾选「内容由 AI 生成」，抖音、快手、B 站、视频号均有对应开关。付费课程还建议在课程介绍页显性说明讲师形象为 AI 生成——**这既是合规要求，也能避免学员事后以\"虚假宣传\"投诉退款**。\n\n法规会变，上面是写作时的通行理解，**不构成法律意见**。正式商用前请让法务过一遍课程文案。\n\n## 什么时候不该用数字人\n\n诚实地说，这几种情况真人出镜更好：\n\n- **需要演示操作的课**——数字人只能说话，不能拿教具、不能写板书、不能操作软件。软件课直接录屏 + 配音，比数字人合适得多。\n- **强人格 IP 的课**——知识付费的溢价很大程度来自\"这个人\"。老师本人有影响力时，数字人是在稀释资产。\n- **需要即时互动的直播课**——数字人是预渲染的，答不了问。\n- **已有真人素材、只是要换语言**——直接用 `videoretalk` 或 `sync-lipsync-3` 做口型替换，不需要重造一个人。\n\n数字人的真正优势是**批量与一致性**：一门课几十节，同一个形象、同一个音色、随时可改稿重出，不用约老师档期、不用重打光、改一句话不用重录一整节。用在这个场景上才划算。\n\n课程内容的价值在于讲得对不对、清不清楚——**这件事数字人帮不上忙，讲稿才是**。把省下的时间花在 ② 上。\n\nArchive v1.0.15: 6 files, 33837 bytes\n\nFiles: pipeline.md (16592b), recipes.md (31651b), skill-card.md (2356b), SKILL.md (11164b), troubleshooting.md (11508b), _meta.json (139b)\n\nFile v1.0.15:SKILL.md\n\n---\nname: dlazy-course-avatar\nversion: 1.0.0\ndescription: Knowledge-course / online-teaching avatar lecturer — 16 landscape base-portrait recipes plus the slide-first pipeline that keeps a 20-minute lesson under 3000 credits. Use when the user wants a digital human to teach a paid course, a training module or a knowledge-sharing video on platforms like Xiaoetong, Tencent Classroom, Bilibili, YouTube or an internal LMS.\nmetadata: {\"clawdbot\":{\"emoji\":\"🎓\",\"requires\":{\"bins\":[\"npm\",\"npx\"],\"env.optional\":[\"DLAZY_API_KEY\"]},\"install\":\"npm install -g @dlazy/cli@1.2.3\",\"installAlternative\":\"npx @dlazy/cli@1.2.3\",\"homepage\":\"https://dlazy.com\",\"configLocation\":\"~/.dlazy/config.json\",\"apiEndpoints\":[\"api.dlazy.com\",\"files.dlazy.com\"]},\"openclaw\":{\"systemPrompt\":\"When invoking this skill, read the 露脸预算 section of SKILL.md before quoting any cost, and read recipes.md before writing any base-portrait prompt. Run `dlazy <model> -h` to confirm current flags before building a command.\"}}\n---\n\n# 知识付费讲师数字人\n\n课程视频跟带货视频最大的不同：**观众来看的不是你的脸，是你屏幕上的东西。**\n\n这句话不是审美判断，是成本判断。`jimeng-omnihuman-1.5` 按音频秒数计费，1080p 是 **23 积分/秒**。一节 20 分钟的课全程用数字人驱动：\n\n```\n1200 秒 × 23 = 27600 积分（驱动）\n```\n\n而同样一节课，讲师只在开场、章节转场、结尾露脸（约 110 秒），其余画面是课件 + 配音：\n\n```\n110 秒 × 23 = 2530 积分（驱动）  ——  省掉 90.8%\n```\n\n算上配音，两条路线的**全成本**是 2640 对 27840，详见下面的\"露脸预算\"。\n\n**省下的 25000 积分不是靠妥协换来的，成片反而更像一门正经的课。** 全程一张脸对着你讲 20 分钟，是知识付费里完播率最差的形态之一。\n\n所以这个技能的核心不是\"怎么把数字人做得更真\"，而是**怎么把数字人用在该用的 110 秒上**，剩下的交给课件。底图配方解决前者，露脸预算解决后者。\n\n## 何时使用\n\n- 做小鹅通 / 腾讯课堂 / 知识星球 / B 站 / YouTube 的付费课或公开课\n- 企业内训、SOP 培训、新员工入职课程\n- 一门课几十节，需要**同一个讲师形象跨集稳定复用**\n- 已有 PPT / 讲义 / 文档，想变成有讲师出镜的课程视频\n- 真人讲师没时间录制，或需要多语言版本\n\n不适用于：单条知识口播短视频（用 `dlazy-short-video`，竖屏逻辑不同）、纯课件无讲师的文档转视频（直接 `dlazy chat --skill file-to-video`）、数学公式推导动画（那是 `math-explainer-video` 模板的活）。\n\n## 与带货版的根本差异\n\n如果你用过 `dlazy-ecommerce-avatar`，这五处是**不能照搬**的：\n\n| | 带货 | 课程 |\n|---|---|---|\n| 画幅 | 竖屏 9:16 | **横屏 16:9** |\n| 构图 | 人物居中 | **人物偏侧，留出内容区** |\n| 露脸 | 全程 | **只在开场/转场/结尾** |\n| 单集时长 | 30~60 秒 | **8~40 分钟**（要切几十段） |\n| 合规红线 | 广告法第九条（绝对化、疗效） | **广告法第二十四条**（升学承诺、通过率、资质） |\n\n尺寸参数尤其容易串。带货是 `--size 2160x3840`，课程是 `--size 3840x2160`——写反了不报错，出一张竖图，然后你会在装配那一步才发现。\n\n## 五条硬约束\n\n**1. 横屏直接上 4K，不额外花钱。**\n\n`gpt-image-2` 的计费**只看 `--quality` 和有没有参考图，完全不看 `--size`**（源码核对：`config/models/gpt-image-2.ts` 的 `costs`）。所以：\n\n```\n--size 2048x1152 --quality high   →  37 积分\n--size 3840x2160 --quality high   →  37 积分   ← 同价，直接用这个\n```\n\n横屏的 16:9 有两档（`2048x1152` / `3840x2160`），**竖屏只有 4K 一档**（`2160x3840`）。既然同价，中等档只在你需要小文件时才有意义。\n\n注意 `1536x1024` 是 **3:2 不是 16:9**，拿去做课程封面会被平台裁掉两边。\n\n**2. 底图要给内容留位置。**\n\n课程画面的左侧（或右侧）三分之二要放 PPT、板书、代码、图表。讲师站在剩下的三分之一里。\n\n这意味着底图**不能居中构图**——居中的人像叠上课件，要么挡内容，要么只能缩成一个小圆窗浪费掉整张 4K。配方 11 是为此专门写的，课程主力就用它。\n\n反过来，开场白和结尾这两段没有课件，用配方 12 的全画幅中近景，视觉上形成\"打招呼 → 讲内容 → 总结\"的节奏。\n\n**3. 一门课的底图必须一次定死。**\n\n带货可以每条视频换个人设，课程不行。第 3 节的讲师换了件衣服，观众立刻出戏。\n\n**开课前把底图存成文件，之后几十节全部引用同一个文件。** 不要指望同一段 prompt 能复现同一张脸——两次采样出的不是一个人。详见\"保持同一张脸\"。\n\n**4. 时长是硬上限，一节课要切几十段。**\n\n`jimeng-omnihuman-1.5` 的音频上限：**1080p ≤ 30 秒，720p ≤ 60 秒**。\n\n按每秒 4.5 字算（实测 `qwen-tts` 为 4.54~4.71 字/秒），30 秒 ≈ 130 字。而 `qwen-tts` 自己的 prompt 上限是 **512 字符**——中文一个字算一个字符，加标点后 130 字很安全。\n\n写讲稿时就**按 110~130 字一段切好**，别写完 20 分钟才回头切，语气会断。\n\n**5. 中文 prompt 走 `--input` JSON 文件。**\n\n用 shell 变量拼中文，在 Windows 上会静默变乱码——命令照样返回 `ok: true`，但出图跟 prompt 毫无关系。批量生产一律：\n\n```bash\ndlazy gpt-image-2 --input @payload.json --save ./lecturer/base.png\n```\n\n详见 `troubleshooting.md` 的\"编码陷阱\"。不确定参数时先 `--dry-run`，打印载荷和积分预估，不出图不扣分。\n\n## 露脸预算\n\n这是本技能最该记住的一张表。以一节 **20 分钟**的课为例：\n\n| 段落 | 时长 | 画面 | 驱动 | TTS | 小计 |\n|---|---|---|---|---|---|\n| 开场白 | 30 秒 | 讲师全画幅 | 690 | 6 | 696 |\n| 章节转场 × 6 | 各 10 秒 | 讲师偏侧 + 章节标题 | 1380 | 36 | 1416 |\n| 正文讲解 | 18 分钟 | **课件 + 配音，无讲师** | 0 | 60 | 60 |\n| 结尾总结 | 20 秒 | 讲师全画幅 | 460 | 6 | 466 |\n| 合计 | 20 分钟 | | 2530 | 108 | **约 2640** |\n\n对照全程驱动的 27840 积分（27600 驱动 + 240 TTS）。**同一节课，差 10 倍以上。**\n\n正文那 18 分钟只要 60 积分，是因为 **`qwen-tts` 固定 6 积分一次，与字数无关**（源码核对：`costs` 直接 `return 6`）。由此得到一条不显然的优化：\n\n> **正文段不做驱动，不受 30 秒时长限制，所以每次调用应该把 512 字符写满。**\n\n写满是 10 次调用 60 积分；如果沿用露脸段那种 130 字一段的切法，同样的内容要 38 次调用 228 积分。**白花 168 积分买了同一段音频。** 露脸段受驱动的 30 秒上限约束只能切短，正文段没有这个约束——两者的切法必须分开。\n\n想再省，两个杠杆：\n\n- **降到 720p**：15 积分/秒，再省 35%。讲师小窗在 720p 下完全够用——它在成片里只占画面的六分之一，观众看不出差别。全画幅的开场结尾建议留在 1080p。\n- **章节转场用静态卡**：把 6 次转场里的一半换成纯课件动画，只保留关键章节露脸，再省 700 左右。\n\n**不要省的地方是底图那 37 积分。** 一张底图要服务几十节课，摊下来趋近于零；底图不合格导致驱动失败，一次就是几百上千积分。\n\n## 流水线\n\n```\n① 底图     gpt-image-2 (2000字) / seedream-5.0 (500字)   ← 提示词杠杆全在这\n② 讲稿     claude-sonnet-5 / qwen3.8-max                  ← 按 110~130 字/段切好\n③ 配音     qwen-tts (512字符上限) / doubao-tts            ← 全课必须同一音色\n④ 驱动     jimeng-omnihuman-1.5 (300字, ≤30秒@1080p)      ← 只做露脸段；单点依赖\n⑤ 课件     Remotion 模板 / gpt-image-2 出静态板           ← 正文主体在这\n⑥ 装配     dlazy chat --skill file-to-video               ← CLI 本身不做合成\n```\n\n**CLI 没有视频合成能力。** `dlazy` 是模型调用器，没有 merge / concat 命令。要交付 mp4，最后一步必须走沙箱模板或你自己的 ffmpeg。\n\n**④ 是单点依赖。** 5 个数字人模型里只有 `jimeng-omnihuman-1.5` 吃「静态图 + 音频」，其余四个都要「现成的说话视频 + 音频」才能换口型。它一挂整条链路就断，降级成本翻倍。\n\n**⑤ 是课程版真正的主战场。** 带货版这一层只是插几个产品空镜，课程版这一层是全片 90% 的画面。`file-to-video` 模板能把 PPT / Word / PDF 直接解析成带旁白和字幕的课件视频，讲师片段作为素材叠进去。完整命令见 `pipeline.md`。\n\n## 配方索引\n\n`recipes.md` 里有 16 条配方，参数全部经源码核对，可直接粘贴执行。\n\n| 组 | 配方 | 适用 |\n|---|---|---|\n| A 讲台场景 | 01 纯色抠像位 / 02 书房 / 03 教室白板 / 04 演播室 / 05 咖啡厅 / 06 工位实操 | 按课程调性选一条 |\n| B 学科人设 | 07 学术专家 / 08 职场导师 / 09 语言教师 / 10 技术讲师 | 按学科选，注意 07 的资质合规 |\n| C 景别机位 | 11 **右三分之一构图** / 12 全画幅中近景 / 13 小窗特写 | 11 是正文主力，12 开场结尾，13 画中画 |\n| D 课件视觉 | 14 章节封面板 / 15 概念示意图 / 16 课程封面 | 第 ⑤ 层的静态素材 |\n\n选不动就用 **配方 11 + 配方 12 这一对**：11 出正文用的偏侧构图，12 出开场结尾用的全画幅，同一人设两个机位，一门课就够了。\n\n## 保持同一张脸\n\n一门课几十节，人设一致性是刚需。三种做法，从稳到弱：\n\n1. **存图复用**（唯一推荐）——第一次满意后把底图存成文件，全课引用同一个文件，脸 100% 一致\n2. **参考图重绘**——`gpt-image-2 --images base.png --prompt \"同一人物，换成...\"`，能换背景保住脸，但**积分从 37 涨到 60**（有参考图时 high 档计费不同），且跨集微妙差异会累积\n3. **纯文字复现**——不要用。同样的 prompt 两次出的脸不是一个人\n\n配方 11 / 12 / 13 是同一人设的三个机位，**必须用做法 2 从同一张底图派生**，不要各自独立生成——否则三个机位是三个人。\n\n## 认证\n\n```bash\ndlazy login          # 设备码流程，自动保存 key\ndlazy auth set KEY   # 已有 key 时直接写入\n```\n\nKey 从 https://dlazy.com/dashboard/organization/api-key 获取，保存在 `~/.dlazy/config.json`。也可用 `DLAZY_API_KEY` 环境变量按次传入。\n\n积分不足返回 `insufficient_balance`，充值入口：https://dlazy.com/dashboard/organization/settings?tab=credits\n\n## Reference Map\n\n| 文件 | 内容 |\n|---|---|\n| `recipes.md` | 16 条底图与课件配方，完整可执行命令 + 每条的驱动注意事项 |\n| `pipeline.md` | ①~⑥ 逐步命令，含分段批处理、画中画合成、成本估算 |\n| `troubleshooting.md` | 驱动失败对照表、长课程批处理陷阱、教培合规红线 |\n\nFile v1.0.15:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"dlazy-course-avatar\",\n  \"version\": \"1.0.15\",\n  \"publishedAt\": 1790916488734\n}\n\nFile v1.0.15:pipeline.md\n\n# 完整流水线 · 从讲义到成片\n\n以\"一节 20 分钟横屏课程\"为例，逐步给出可执行命令。\n\n## 先定成片形态\n\n动手前先定这个，它决定了成本量级，改起来要重做。\n\n**A. 串行（推荐）** —— 讲师段与课件段前后接续，同一时刻只有一种画面：\n\n```\n[讲师 开场 30s] → [课件 正文] → [讲师 转场 10s] → [课件 正文] → … → [讲师 结尾 20s]\n```\n\n讲师只需驱动 110 秒 ≈ **2640 积分**。这是知识付费最主流的形态，也是本技能的默认路线。\n\n**B. 全程画中画** —— 课件铺满，讲师小窗常驻右下角：\n\n讲师要驱动满 1200 秒 ≈ **27840 积分**。**10 倍成本**，换来的只是一个六分之一大小的常驻人头。除非甲方明确要求，否则不值。\n\n**C. 局部画中画（折中）** —— 串行为主，只在 2~3 个关键讲解点让小窗出现 30 秒：\n\n比 A 多花约 2000 积分，换来\"讲师一直在场\"的感觉。做企业内训、需要强讲师存在感时用这条。\n\n下面按 **A** 展开，⑥ 里给出画中画的合成命令（C 用得上）。\n\n## 成本结构\n\n| 步骤 | 命令 | 积分 |\n|---|---|---|\n| ① 底图 | `gpt-image-2 --quality high` | 37（一门课一次） |\n| ① 派生机位 | `gpt-image-2 --images` | 60 × 2（一门课一次） |\n| ② 讲稿 | `claude-sonnet-5` | 个位数 |\n| ③ 配音 | `qwen-tts` **固定 6 积分/次** | 约 108 |\n| ④ **驱动** | `jimeng-omnihuman-1.5` 1080p × 110 秒 | **2530** |\n| ⑤ 课件 | `gpt-image-2` 静态板 × N | 37 × N |\n| ⑥ 装配 | 沙箱模板 / 自己 ffmpeg | — |\n| 单节合计 | | **约 2650** |\n\n底图那 157 积分（37 + 60×2）是**整门课一次性**的，摊到 30 节上每节 5 积分。\n\n**驱动占 95%。** 所以省钱只有一个方向：**砍露脸时长**，不是砍画质。\n\n## ① 底图\n\n从 `recipes.md` 选一条，先出正文主力机位（配方 11），再派生另外两个机位：\n\n```bash\n# 主力机位：右三分之一构图，左侧留给课件\ndlazy gpt-image-2 --input @payload/base.json --batch 4 --save ./lecturer/11-third.png\n\n# 从它派生开场/结尾用的全画幅（保住同一张脸）\ndlazy gpt-image-2 --images ./lecturer/11-third.png --input @payload/derive-full.json \\\n  --save ./lecturer/12-full.png\n```\n\n`--batch 4` 并行出 4 张选一张（积分 ×4 = 148）。**人脸一次难中，这个钱值得花一次**——选定后这张脸要用几十节课。\n\n出图后按 `recipes.md` 末尾的检查清单逐项过再往下走。带着一张不合格的底图，后面每一节课的驱动积分都是白花的。\n\n## ② 讲稿\n\n**关键：露脸段和正文段用两种切法。** 这是课程版最容易做错的一步。\n\n| | 切法 | 为什么 |\n|---|---|---|\n| 露脸段 | **110~130 字一段** | 受 omnihuman 的 30 秒硬上限约束 |\n| 正文段 | **写满 500 字符** | 不驱动，无时长约束；TTS 固定 6 积分/次，写满省钱 |\n\n中文口播约 **每秒 4.5 字**（实测 `qwen-tts` 为 4.54~4.71 字/秒），130 字 ≈ 29 秒，卡在 30 秒上限内安全。\n\n```bash\ndlazy claude-sonnet-5 --prompt \"为这门课的第 3 节写讲稿。\n主题：<本节主题>\n时长：20 分钟，共 6 个章节\n输出三类文本，用 === 分隔：\n1. 开场白：110 字以内，抛出本节要解决的问题，不要自我介绍和寒暄\n2. 章节转场 × 6：每条 45 字以内，承上启下，点出下一章要讲什么\n3. 正文讲解 × 6：每章一段，每段严格控制在 480 字以内（含标点），\n   语言口语化可直接朗读，有具体例子和数字，避免书面语和排比句\n4. 结尾总结：90 字以内，收束要点并给出下一节的钩子\n合规要求：不得出现升学率、通过率、保过、包会等承诺性表述，\n不得虚构任何机构背书、职称或从业资质\n输出纯文本，不要任何解释\"\n```\n\n最后那条合规要求是硬线，别删——原因见 `troubleshooting.md` 的\"教培合规红线\"。\n\n## ③ 配音\n\n`qwen-tts` 的 prompt **上限 512 字符，超出整次请求 400，积分不退**。\n\n`qwen-tts` 的输出是 **WAV 不是 MP3**（响应 URL 后缀为 `.wav`，文件头为 `RIFF/WAVE`）。`--save` 只决定本地文件名，不做转码——存成 `.mp3` 会得到一个扩展名骗人的 WAV 文件，第 ⑥ 步 ffmpeg 装配时按扩展名推断格式就会出错。**存成 `.wav`。**\n\n\n```bash\n# 露脸段（短，受驱动时长约束）\ndlazy qwen-tts --input @payload/tts-open.json  --save ./audio/open.wav\ndlazy qwen-tts --input @payload/tts-trans1.json --save ./audio/trans1.wav\n\n# 正文段（写满 500 字符，一次调用顶四次）\ndlazy qwen-tts --input @payload/tts-body1.json --save ./audio/body1.wav\n```\n\n`payload/tts-open.json` 形如：\n\n```json\n{ \"prompt\": \"<文本>\", \"voice\": \"Cherry\" }\n```\n\n音色选择：\n\n- `--voice Cherry`（默认，年轻女声）\n- `--voice Serena` / `Vivian`（成熟女声，适合人文、管理类）\n- `--voice Ethan` / `Ryan`（男声，适合技术、商业类）\n- 全部系统音色见 `dlazy qwen-tts -h`\n\n要更贴合人设的声音，用设计模式自然语言描述：\n\n```bash\ndlazy qwen-tts --generation_mode design \\\n  --voice_prompt \"40岁男性，语速平稳偏慢，讲课语气，重点处有自然停顿，不夸张\" \\\n  --prompt \"<文本>\" --save ./audio/open.wav\n```\n\n**整门课必须用同一个音色。** 不只是同一节课——第 5 节换了声音，等于换了老师。把音色 id 写进项目配置文件，别靠记忆。\n\n课程配音比带货要**慢**。带货求煽动，课程求听得清。设计模式里写\"语速平稳偏慢\"比默认语速更适合教学。\n\n## ④ 驱动\n\n**只驱动露脸段。** 正文段没有讲师画面，跳过这一步——这就是省下 90% 积分的地方。\n\n**这一步是单点依赖。** dLazy 有 5 个数字人相关模型，只有 `jimeng-omnihuman-1.5` 接受「静态图 + 音频」：\n\n| 模型 | 输入 | 能否用底图驱动 |\n|---|---|---|\n| `jimeng-omnihuman-1.5` | `--images` + `--audio` | ✅ 唯一 |\n| `videoretalk` | `--video_url` + `--audio_url` | ❌ 要现成视频 |\n| `sync-lipsync-3` | `--video_url` + `--audio_url` | ❌ 要现成视频 |\n| `heygen-lipsync-speed` | `--video_url` + `--audio_url` | ❌ 要现成视频 |\n| `jimeng-dream-actor` | `--images` + `--videos` | ❌ 动作迁移，不吃音频 |\n\n它一挂整条链路就断。降级路径是「i2v 生成说话视频 → videoretalk 对口型」，成本翻倍，能走主路径就别走。\n\n```bash\n# 开场：全画幅机位\ndlazy jimeng-omnihuman-1.5 \\\n  --images ./lecturer/12-full.png \\\n  --audio ./audio/open.wav \\\n  --input @payload/drive.json \\\n  --resolution 1080p \\\n  --save ./clips/open.mp4\n\n# 章节转场：偏侧机位，可降 720p 省钱\ndlazy jimeng-omnihuman-1.5 \\\n  --images ./lecturer/11-third.png \\\n  --audio ./audio/trans1.wav \\\n  --input @payload/drive.json \\\n  --resolution 720p \\\n  --save ./clips/trans1.mp4\n```\n\n`--prompt` 上限 **300 字符且可选**（`payload/drive.json` 里就一行）。它控制的是**运镜与动作幅度**，不是画面内容——画面已被底图定死。课程场景的有效写法：\n\n| 想要 | 写法 |\n|---|---|\n| 讲课标准态 | `人物自然讲解，幅度克制，偶尔轻微点头，身体基本不动` |\n| 开场问候 | `人物微笑讲话，开场有轻微的点头示意，表情自然亲和` |\n| 强调重点 | `人物讲解语气加重时头部小幅前倾，眼神专注` |\n\n**不要写**画面描述、镜头运动、服装——底图已经定了，写了不生效还占额度。\n\n**它对手部的控制有限。** 实测（带货版）：底图双手完全不入镜、prompt 明确写了\"手部不做大幅动作\"，omnihuman 仍自行生成了双手抬到胸前的讲解动作。要避免只能从底图的景别入手，靠 prompt 挡不住。\n\n**`fast_mode` 参数**：`jimeng-omnihuman-1.5` 有 `--fast_mode` 开关（默认 false）。计费逻辑只看 `resolution` 不看它（源码核对），所以开了**不涨价也不降价**，是纯粹的速度/质量取舍。一节课要跑十几段时值得试一次对比效果。\n\n批量跑（一节课有 8 段露脸），用 `--no-wait` 并发发出：\n\n```bash\nfor seg in open trans1 trans2 trans3 trans4 trans5 trans6 end; do\n  dlazy jimeng-omnihuman-1.5 --images ./lecturer/11-third.png \\\n    --audio ./audio/$seg.wav --resolution 720p --no-wait\ndone\n# 各自返回 generateId，再逐个取回\ndlazy status <generateId> --save ./clips/open.mp4\n```\n\n**第一次跑完，先探一下输出规格**（各模型规格互不相同，⑥ 要用）：\n\n```bash\nffprobe -v error -select_streams v:0 -show_entries stream=width,height,r_frame_rate -of csv=p=0 ./clips/open.mp4\nffprobe -v error -select_streams a:0 -show_entries stream=sample_rate,channels -of csv=p=0 ./clips/open.mp4\n```\n\n带货版实测竖屏 720p 档出的是 **704x1248 @ 25fps / 24000Hz 单声道**（不是标准 720x1280），且成片比输入音频长 0.1~0.2 秒。**横屏档的实际输出尺寸尚未实测**，第一次跑完务必自己探一次，把结果填进 ⑥ 的命令里。\n\n## ⑤ 课件\n\n正文那 18 分钟的画面主体。三条路，按精度需求选：\n\n**A. `file-to-video` 模板（推荐）** —— 已有 PPT / Word / PDF 讲义时，直接解析成带旁白和字幕的课件视频：\n\n```bash\ndlazy chat --skill file-to-video \\\n  --prompt \"把这份讲义做成 18 分钟的课程视频，六个章节，\n每章配旁白和字幕，风格克制专业，用深墨蓝配琥珀的双色系统，\n章节之间加过渡卡，不要花哨转场\" \\\n  --files ./讲义.pptx\n```\n\n它内部走 Remotion，**文字是真排版不是生图**，中文清晰可控可改。\n\n**B. 静态板 + Remotion 排版** —— 没有现成讲义时，用 `recipes.md` D 组出背景板，文字在 Remotion 里排：\n\n```bash\ndlazy gpt-image-2 --input @payload/chapter.json --save ./slides/ch1.png\n```\n\n**C. `math-explainer-video` 模板** —— 公式推导、定理可视化类课程，KaTeX 排公式 + SVG 画图：\n\n```bash\ndlazy chat --skill math-explainer-video --prompt \"把贝叶斯公式的推导做成 3 分钟动画讲解\"\n```\n\n**永远不要让生图模型写课件上的字。** 中文必然乱码，英文经常拼错，而且改一个字就要重出整张图。生图只负责背景和意象，文字交给 Remotion。\n\n## ⑥ 装配\n\n**CLI 不做视频合成。** `dlazy` 是模型调用器，没有 merge / concat 命令。\n\n**下面的 ffmpeg 命令均已本地实跑验证**（用 lavfi 造的规格不一致素材：1248x704@25fps/24000Hz mono 的讲师段 + 1920x1080@30fps/44100Hz stereo 的课件段），语法和规格统一逻辑确认可用。真实素材的规格请按 ④ 末尾探到的实际值替换。\n\n### 串行拼接（形态 A）\n\n**各段规格互不相同，必须全重编码。** `-c copy` 和 `-c:v copy` 都不能用——带货版实测过，视频流会刷屏 `Non-monotonic DTS`，产物被塞进错误的容器，画面不花但音画不同步。\n\n```bash\nffmpeg -i clips/open.mp4 -i slides/body1.mp4 -i clips/trans1.mp4 -filter_complex \\\n\"[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25[v0];\\\n[1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25[v1];\\\n[2:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25[v2];\\\n[0:a]aformat=sample_rates=44100:channel_layouts=stereo[a0];\\\n[1:a]aformat=sample_rates=44100:channel_layouts=stereo[a1];\\\n[2:a]aformat=sample_rates=44100:channel_layouts=stereo[a2];\\\n[v0][a0][v1][a1][v2][a2]concat=n=3:v=1:a=1[v][a]\" \\\n-map \"[v]\" -map \"[a]\" -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \\\n-c:a aac -ar 44100 -ac 2 lesson.mp4\n```\n\n实测结果：零警告，三段 6 + 10 + 4 秒拼出 **20.04 秒**（误差 0.04），输出统一为 1920x1080 / 25fps / 44100Hz stereo。\n\n**用 `aformat` 不要用 `aresample`。** `aresample=44100` 只统一采样率，不统一声道数——讲师段是单声道、课件段是立体声，混着送进 `concat`。ffmpeg 7.0 实测能自动协商跑通，但这是版本行为，不保险。`aformat=sample_rates=44100:channel_layouts=stereo` 把两项都显式钉死，两种写法输出完全一致，没有理由用前者。\n\n段数变化时改三处：输入 `-i` 的个数、`[vN]/[aN]` 的编号、`concat=n=` 的数字。\n\n### 画中画（形态 C）\n\n课件铺满，讲师小窗叠在右下角。\n\n**矩形小窗**（推荐，最稳）：\n\n```bash\nffmpeg -i slides/body2.mp4 -i clips/talk2.mp4 -filter_complex \\\n\"[1:v]scale=480:-2,setsar=1[pip];[0:v][pip]overlay=W-w-48:H-h-48:shortest=1[v]\" \\\n-map \"[v]\" -map 1:a -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \\\n-c:a aac -ar 44100 -ac 2 pip.mp4\n```\n\n**`shortest=1` 不能省。** 实测：讲师视频 6 秒、课件 10 秒，不加这个参数输出会是 10 秒——后 4 秒讲师小窗**定格成一张照片**（overlay 默认 `repeatlast=1`），音轨同时静音，看起来像播放器卡死。加上后输出 6.02 秒，跟随讲师段结束。\n\n`-map 1:a` 取讲师的音频（画中画时是讲师在讲）。`scale=480:-2` 的 `-2` 让高度按比例自适应并保持偶数（libx264 要求）。\n\n**圆形小窗**（更像课程直播，实测可用）：\n\n```bash\nffmpeg -i slides/body2.mp4 -i clips/talk2.mp4 -filter_complex \\\n\"[1:v]scale=360:360:force_original_aspect_ratio=increase,crop=360:360,setsar=1,format=rgba,\\\ngeq=r='r(X,Y)':g='g(X,Y)':b='b(X,Y)':a='if(gt(pow(X-W/2,2)+pow(Y-H/2,2),pow(W/2,2)),0,255)'[pip];\\\n[0:v][pip]overlay=W-w-48:H-h-48:shortest=1[v]\" \\\n-map \"[v]\" -map 1:a -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \\\n-c:a aac -ar 44100 -ac 2 pip_circle.mp4\n```\n\n`geq` 逐像素算 alpha，**比矩形版慢得多**。长视频建议先用矩形版对好时间轴，最后再换圆形出一次。\n\n圆形裁切要求底图下巴留足余量，否则圆一裁下巴就没了——这是 `recipes.md` 配方 13 存在的原因。\n\n### 或者交给沙箱模板\n\n需要字幕、章节标题、转场动画时，比手写 ffmpeg 省事：\n\n```bash\ndlazy chat --skill file-to-video \\\n  --prompt \"把这些素材装配成一节 20 分钟的课程视频：open.mp4 开场，\n之后六个章节的课件段与转场讲师段交替，end.mp4 结尾，全片加中文字幕，\n章节开头加标题卡\" \\\n  --files ./clips/*.mp4 ./slides/*.mp4\n```\n\n沙箱返回项目 id，后续用 `dlazy chat --project <id> --prompt \"...\"` 继续调整。\n\n## 一次性跑完的脚本骨架\n\n**中文一律走 JSON 文件，不要用 shell 变量。** 见 `troubleshooting.md` 的\"编码陷阱\"——用 `$(cat ...)` 拼中文 prompt 会静默产生乱码，命令照样返回 `ok: true`，出来的东西跟你要的毫无关系。\n\n```bash\n#!/usr/bin/env bash\nset -e\nmkdir -p lecturer audio clips slides payload\n\n# 底图整门课只做一次，做完注释掉\n# dlazy gpt-image-2 --input @payload/base.json --batch 4 --save ./lecturer/11-third.png\n# dlazy gpt-image-2 --images ./lecturer/11-third.png --input @payload/derive-full.json --save ./lecturer/12-full.png\n\n# 露脸段：配音 + 驱动\nfor seg in open trans1 trans2 trans3 trans4 trans5 trans6 end; do\n  dlazy qwen-tts --input @payload/tts-$seg.json --save ./audio/$seg.wav\ndone\n\ndlazy jimeng-omnihuman-1.5 --images ./lecturer/12-full.png \\\n  --audio ./audio/open.wav --input @payload/drive.json \\\n  --resolution 1080p --save ./clips/open.mp4\n\nfor seg in trans1 trans2 trans3 trans4 trans5 trans6; do\n  dlazy jimeng-omnihuman-1.5 --images ./lecturer/11-third.png \\\n    --audio ./audio/$seg.wav --input @payload/drive.json \\\n    --resolution 720p --save ./clips/$seg.mp4\ndone\n\ndlazy jimeng-omnihuman-1.5 --images ./lecturer/12-full.png \\\n  --audio ./audio/end.wav --input @payload/drive.json \\\n  --resolution 1080p --save ./clips/end.mp4\n\n# 正文段：写满 512 字符，一次调用顶四次\nfor i in 1 2 3 4 5 6; do\n  dlazy qwen-tts --input @payload/tts-body$i.json --save ./audio/body$i.wav\ndone\n\n# 课件与装配交给沙箱模板（CLI 不做合成）\necho \"露脸段与配音已就绪，接下来跑 ⑤ 与 ⑥\"\n```\n\n所有 JSON 用 **UTF-8** 保存。`payload/drive.json` 就一行：\n\n```json\n{ \"prompt\": \"人物自然讲解，幅度克制，偶尔轻微点头，身体基本不动\" }\n```\n\n跑之前先在每条命令后加 `--dry-run` 走一遍，确认参数和积分预估。一节课十几次驱动调用，参数写错一个字母就是几百积分。\n\nFile v1.0.15:recipes.md\n\n# 底图配方库 · 知识付费讲师数字人\n\n16 条配方。A~C 组是讲师人像，D 组是课件视觉素材。每条都是可直接粘贴执行的完整命令。\n\n## 使用前必读\n\n**实测状态。** 本库的**参数**全部经源码核对（`config/models/gpt-image-2.ts` 与 `jimeng-omnihuman-1-5.ts` 的 zod schema 与 costs 函数），尺寸枚举、字数上限、计费系数可以放心用。\n\n**已实跑并逐张核对的三条**（2026-08-28，各跑一次一次命中，未重试）：\n\n| 配方 | 核对结论 |\n|---|---|\n| 01 · 纯色抠像位 | 背景纯色无渐变、发丝边缘锐利可抠，人物居中。裁切位比 prompt 写的\"胸口\"略低，不影响画中画使用 |\n| 11 · 右三分之一构图 | 人物中轴命中约 75%，左侧三分之二完全空旷、明度均匀，可直接叠课件。**\"百分之七十五\"这个写法确实有效** |\n| 14 · 章节封面板 | 无任何假文字混入（这条是本库最容易翻车的），三色配色与留白区都符合 |\n\n驱动链路也已端到端跑通：配方 11 底图 → `qwen-tts` → `jimeng-omnihuman-1.5 --resolution 720p` → 出片。\n\n**其余 13 条仍未实跑。** 第一次用时加 `--batch 4` 并逐张检查，特别是\"注意\"里标出的高风险项。发现偏差请回写到对应配方下面，这个库要靠使用积累。\n\n**配方结构。** 每条 prompt 按同一骨架写，改的时候按段改，不要整段重写：\n\n```\n身份气质 → 妆造服装(材质) → 姿态手部 → 表情眼神 → 景别构图(焦段/机位/留白区)\n→ 背景景深 → 光线方案(主光/补光/光比) → 色彩基调 → 画质质感 → 驱动约束\n```\n\n比带货版多出的是**留白区**——课程画面要给课件让位置，这一段决定了这张底图能不能直接用。\n\n最后那段**驱动约束**是 A~C 组共有的，删了就容易驱动失败：\n\n> 单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\n\nD 组不是人像，没有这一段。\n\n**尺寸速记。** 课程横屏一律 `--size 3840x2160`。计费不看尺寸（只看 `--quality` 和有无参考图），所以 4K 与 `2048x1152` 同价 37 积分，直接用 4K。**别写成 `2160x3840`**，那是竖屏。\n\n**省积分替代。** 主命令用 `gpt-image-2 --quality high`（37 积分），中文语境理解最准。预算敏感时换 `seedream-5.0`（4K 仅 **8 积分**）：\n\n```bash\ndlazy seedream-5.0 --prompt \"<同一条配方 prompt>\" --size 16:9 --resolution 4k --save ./lecturer/base.png\n```\n\n本库配方长度控制在 **500 字符以内**，卡在 `seedream-5.0` 的上限之内，可以原样粘过去。\n\n**同一人设的三个机位必须派生，不能各自生成。** 配方 11 / 12 / 13 是一门课的三个机位。先用 11 出底图存档，12 和 13 用 `--images` 从它派生（见每条的\"派生命令\"），否则你会得到三个长得不一样的老师。派生时积分从 37 涨到 **60**。\n\n---\n\n## A 组 · 讲台场景\n\n按课程调性选一条。\n\n### 01 · 纯色抠像位 ⭐ 画中画首选\n\n**适用**：要把讲师做成画中画小窗叠在课件上。纯色背景便于后期抠像或直接圆形遮罩。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 34 岁左右的亚洲女性课程讲师，气质专业亲和可信，妆容干净自然的职业淡妆，豆沙色哑光唇色，肤质自然真实保留皮肤纹理，不做过度磨皮。发型为黑色及肩直发梳理整齐，发丝边缘清晰锐利与背景分离明确。上身穿雾霾蓝色圆领针织衫，面料织纹细腻，剪裁合身简洁，无任何图案文字logo。姿态为站立正面朝向镜头，双肩放松水平，双手自然垂放在身体两侧完全不入镜。表情为温和的浅笑，嘴角自然，眼神平视镜头专注有交流感。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物居中，画面下缘裁切在胸口位置。背景为完全均匀的浅灰蓝色纯色无缝背景，无任何渐变纹理道具文字，人物与背景明度差明显便于边缘分离。光线方案为正面双侧对称柔光箱主光加顶部发丝光，光比 1.2:1，面部受光极其均匀无阴影，背景独立布光亮度均匀一致。整体色彩基调为干净的低饱和冷灰调。画质为专业摄影棚商业人像，细节锐利，发丝边缘干净。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/01-keyable.png\n```\n\n**注意**：背景**必须是纯色不能有渐变**——渐变背景抠像时边缘会发脏。`--quality high` 在这条上不能降，发丝边缘是抠像成败的关键。\n\n不推荐用纯绿幕：omnihuman 驱动后的视频经过压缩，绿边溢色比浅灰蓝更难处理。圆形遮罩方案见 `pipeline.md` ⑥。\n\n---\n\n### 02 · 书房知识博主\n\n**适用**：人文、商业、心理、写作类课程。知识付费最经典的场景，信任感最好建立。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 38 岁左右的亚洲男性知识课程讲师，气质儒雅沉稳有学识感，短发梳理整齐两鬓有少量自然白发，面部有真实的年龄纹理与皮肤质感不做美颜。上身穿深灰蓝色羊毛开衫内搭浅灰色圆领衫，面料质感厚实有织纹，剪裁松弛得体。姿态为坐姿正面朝向镜头，背部挺直微微前倾表现投入感，双手轻放在桌面边缘仅露出手腕不入画。表情为平和从容的微笑，眼神温和平视镜头有沉稳的说服力。景别为中近景半身像，50mm 标准镜头，机位与视线齐平，人物位于画面右侧三分之一处，左侧三分之二留出大面积干净的背景区域。背景为温暖的书房环境，身后是深胡桃木色书架与排列整齐的书籍脊背，全部被大光圈虚化成柔和的暖色块，书脊上无任何可读文字。光线方案为侧前方窗户自然光作主光柔和漫射，另一侧暖色台灯补光，光比 2:1，面部有自然明暗过渡。整体色彩基调为低饱和的暖棕木质调。画质为自然光人文肖像摄影，真实细腻有空气感。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/02-study.png\n```\n\n**注意**：书架是模型最爱自作主张写字的地方。prompt 已写\"书脊上无任何可读文字\"，出图后仍要**放大检查书脊**——生成的假书名多半是乱码或不存在的英文，糊在成片里很掉档次。\n\n---\n\n### 03 · 教室白板\n\n**适用**：K12 学科辅导、考证培训、技能教学。有板书感，天然适合叠加公式和要点。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 32 岁左右的亚洲女性教师，气质干练清爽有亲和力，妆容为明亮干净的职业淡妆，肤质真实自然保留纹理。发型为黑色长发扎成利落低马尾，额前无碎发遮挡。上身穿浅杏色西装外套内搭白色衬衫，面料挺括有型，剪裁专业无任何图案文字。姿态为站立正面朝向镜头，身体略微侧向左侧，双肩放松，双手自然垂放身侧不入镜。表情为自信明朗的微笑，眉眼舒展，眼神平视镜头有讲解的专注感。景别为中近景半身像，50mm 镜头，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为大面积空白留白区域。背景为现代明亮的教室环境，身后是一整面干净的白色白板，白板上完全空白无任何字迹图形，白板边缘与浅灰墙面有轻微虚化。光线方案为教室顶部均匀漫射光加正面柔光补光，光比 1.3:1，面部通透明亮，白板受光均匀无反光光斑。整体色彩基调为明亮清爽的高明度中性调。画质为高清教育机构宣传摄影，清晰专业。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/03-classroom.png\n```\n\n**注意**：白板必须**完全空白**。模型很爱在白板上画公式和涂鸦，出来一定是乱码。空白白板才是最好的画布——后期用 Remotion 在上面排真正的板书，字才是清楚的。\n\n白板反光是另一个风险，prompt 已写\"无反光光斑\"，出图检查白板中央有没有一块高光。\n\n---\n\n### 04 · 演播室专业讲台\n\n**适用**：企业内训、认证课程、高客单价专业课。正式感最强。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 40 岁左右的亚洲男性资深讲师，气质权威沉稳有分量感，短发利落，面部轮廓清晰有真实的皮肤纹理与轻微胡茬阴影，不做美颜处理。上身穿深藏青色单排扣西装内搭白衬衫，无领带，面料为哑光精纺羊毛质感挺括，剪裁合身无任何徽章文字标识。姿态为站立正面朝向镜头，身姿挺拔肩部平稳，双手自然垂放身侧不入镜。表情为沉稳克制的微表情，嘴角轻收，眼神坚定平视镜头具有可信度与专业权威感。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧偏中，左侧留出充足的深色背景区域。背景为专业演播室环境，深灰蓝色渐变背景墙，远处有一条水平的冷白色灯带光晕，整体大幅虚化成深色调，无任何可读文字或标识。光线方案为侧前方 45 度柔光主光塑造面部立体感，主光充足使面部为画面最亮区域，背后加冷白色轮廓光勾勒发丝与肩线形成主体分离，光比 1.5:1，暗部扎实但不压过面部。整体色彩基调为低饱和的深蓝冷调。画质为高端商业演播级人像摄影，锐利有质感。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/04-studio.png\n```\n\n**注意**：深色调容易让模型把面部整体压暗，面部太暗会削弱驱动出的口型细节。prompt 已显式写\"面部为画面最亮区域\"，出图仍偏暗就把光比降到 1.3:1 重出。\n\n西装上的徽章是幻觉重灾区——已写\"无任何徽章文字标识\"，仍要检查胸口和袖口。\n\n---\n\n### 05 · 咖啡厅轻知识\n\n**适用**：软技能、生活方式、副业、个人成长类课程。降低距离感。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 29 岁左右的亚洲女性讲师，气质放松真诚像朋友聊天，妆容极淡近乎素颜，唇色为自然血色，皮肤自然真实可见纹理细节不做过度修饰。发型为黑色微卷及肩发随意自然带一点生活感的凌乱。上身穿浅燕麦色宽松棉质针织衫，面料纹理清晰有自然褶皱，袖口随意挽起。姿态为坐姿正面朝向镜头，背部放松靠在椅背上，双手轻放在桌面下方不入镜。表情为放松的浅笑带真诚的分享感，眼神温和平视镜头。景别为中近景半身像，50mm 镜头，机位略低于视线约 5 度营造平等对话感，人物位于画面左侧三分之一，右侧三分之二留出虚化的环境背景区。背景为温馨的咖啡馆一角，可见浅木色桌面边缘、暖黄色吊灯的模糊光斑、以及窗外的柔和自然光，背景被大光圈虚化成柔和色块，无任何可读文字招牌。光线方案为侧前方大面积窗户自然光作主光柔和漫射，另一侧墙面反光补光，光比 2:1，面部有自然明暗过渡呈现真实环境光感。整体色彩基调为低饱和的暖米调通透舒适。画质为自然光生活摄影质感真实细腻。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/05-cafe.png\n```\n\n**注意**：这是本库唯一**人物在左、留白在右**的配方——轻知识课程的课件通常更少更简，右侧留白放几个关键词就够。要做成满屏课件的课，换配方 11。\n\n咖啡杯是高频幻觉物，如果出图里人物手边出现杯子，检查它有没有挡住下巴。\n\n---\n\n### 06 · 工位实操\n\n**适用**：软件教学、办公技能、设计课、编程入门。讲师与屏幕同框，天然贴合录屏课。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 30 岁左右的亚洲男性职业讲师，气质专业干净务实，短发清爽整齐，戴细金属框眼镜，面部有真实皮肤纹理不做美颜。上身穿浅灰色纯色圆领卫衣，面料质感柔软有自然褶皱，剪裁简洁无任何图案logo文字。姿态为坐姿正面朝向镜头，背部挺直坐在人体工学椅上，双手轻放在桌沿边缘仅露出手腕不遮挡身体。表情为专注平和的微笑，眼神平视镜头有讲解的耐心感。景别为中近景半身像，50mm 镜头，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为虚化的桌面与屏幕区域留白。背景为整洁的现代办公工位，可见桌面上一台侧向摆放的显示器背面轮廓、一个白色马克杯、以及浅灰色墙面，全部大幅虚化成柔和色块，屏幕不朝向镜头不显示任何内容，无任何可读文字。光线方案为正面偏左柔光主光加顶部均匀漫射补光，光比 1.4:1，面部通透明亮眼镜片无强反光遮挡眼睛。整体色彩基调为干净的中性浅灰调。画质为专业职场环境人像摄影，清晰自然。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/06-desk.png\n```\n\n**注意**：**眼镜是驱动的风险项。** 镜片上的反光块会让 omnihuman 判断眼部区域出错，出现眼神呆滞或闪烁。prompt 已写\"镜片无强反光遮挡眼睛\"，出图后放大看眼睛——只要镜片上有一块白，就重出。\n\n不戴眼镜的版本更稳。这条配方删掉\"戴细金属框眼镜\"即可。\n\n---\n\n## B 组 · 学科人设\n\n按学科选。这一组的合规风险高于 A 组，先读每条的\"注意\"。\n\n### 07 · 学术专家\n\n**适用**：需要学术背书的课程（历史、科普、医学科普、法律常识）。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 45 岁左右的亚洲男性学者型讲师，气质沉静博学有书卷气，短发梳理整齐两鬓有明显自然白发，面部有清晰的年龄纹理法令纹与真实皮肤质感，完全不做磨皮美化。上身穿深灰色羊毛西装外套内搭浅蓝色衬衫，面料哑光有织纹，剪裁传统得体，衣领与胸口无任何徽章证书文字标识。姿态为坐姿正面朝向镜头，背部端正微微前倾，双手交叠轻放在桌面上仅露出手腕不入画。表情为平和内敛的浅笑，眼神沉稳温和平视镜头具有学者的可信度。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧三分之一，左侧留出大面积虚化背景。背景为安静的学术书房，身后是深色实木书柜与整齐书籍的模糊轮廓，全部虚化成柔和深色块，书脊与墙面上无任何可读文字或悬挂的证书奖状。光线方案为侧前方柔和窗光作主光，另一侧低强度补光，光比 2:1，面部明暗过渡自然有立体感。整体色彩基调为低饱和的深棕墨绿调沉稳内敛。画质为人文纪实肖像摄影，真实有质感年龄细节丰富。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/07-scholar.png\n```\n\n**注意（合规）**：prompt 里两次写了\"无任何证书奖状徽章\"，**这不是冗余，是硬要求**。模型极爱在学者背后墙上挂几幅证书、在胸口别个徽章，上面的机构名全是编造的。用一个挂着假证书的形象讲课，是虚构资质，平台会判违规。\n\n**白大褂、诊室、实验室不要用**——非持证主体使用医疗形象是明确红线。医学科普课就用这条的普通西装版本。\n\n---\n\n### 08 · 职场导师\n\n**适用**：管理、销售、职业规划、面试辅导类课程。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 36 岁左右的亚洲女性职场导师，气质干练自信有领导力，妆容为精致克制的职业妆，裸粉色唇色，肤质真实自然保留细节。发型为黑色及肩内扣短发打理利落。上身穿米白色西装外套内搭同色系丝质衬衫，面料垂坠有质感，剪裁利落专业，无任何图案文字。姿态为站立正面朝向镜头，肩背挺拔重心平稳，双手自然垂放身侧不入镜。表情为沉着自信的浅笑，眼神明亮平视镜头有说服力与亲和力的平衡。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为虚化的都市办公背景留白。背景为现代写字楼室内空间，可见落地窗的柔和天光、远处模糊的城市天际线轮廓与浅灰色墙面，全部大幅虚化成明亮柔和的色块，无任何可读文字或品牌标识。光线方案为侧前方落地窗自然光作主光柔和明亮，另一侧白墙反光补光，光比 1.5:1，面部通透有立体感。整体色彩基调为高明度低饱和的米白灰调，干净高级。画质为高端商业人像摄影，细节锐利质感真实。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/08-mentor.png\n```\n\n**注意**：落地窗强光容易在面部形成明暗分界。出图后看鼻梁两侧亮度差，超过两档就把光比降到 1.3:1 重出——驱动时明暗分界线会随头部转动出现撕裂感。\n\n---\n\n### 09 · 语言教师\n\n**适用**：英语、日语、小语种、口语陪练类课程。要亲和、明亮、有耐心感。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 27 岁左右的亚洲女性语言教师，气质亲切明朗有耐心感，妆容清透自然的淡妆，珊瑚粉色唇色气色好，皮肤自然真实有健康光泽保留纹理。发型为黑色中长发自然垂落在肩前，发丝清晰有光泽。上身穿浅蓝色棉质衬衫，面料柔软有自然褶皱，剪裁休闲舒适无任何图案文字。姿态为站立正面朝向镜头，肩膀放松自然，双手自然垂放身体两侧不入镜。表情为温暖开朗的微笑露出自然的笑容，眉眼弯起，眼神明亮平视镜头充满鼓励感。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物位于画面右侧三分之一，左侧三分之二为明亮干净的留白区域。背景为明亮简洁的浅米白色墙面，墙上有一小片虚化的绿植叶影，整体极简通透，无任何可读文字或装饰图案。光线方案为正面偏左大面积柔光主光，右侧反光板补光，光比 1.3:1，面部受光均匀明亮通透，眼中有清晰柔和的眼神光，背景比人物亮半档营造轻盈感。整体色彩基调为高明度的清爽浅蓝米白调。画质为清新自然的商业人像摄影，皮肤质感真实通透。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/09-language.png\n```\n\n**注意**：语言课的口型是内容的一部分（学\n\nArchive v1.0.14: 6 files, 33697 bytes\n\nFiles: pipeline.md (16592b), recipes.md (31651b), skill-card.md (2023b), SKILL.md (11164b), troubleshooting.md (11508b), _meta.json (139b)\n\nArchive v1.0.13: 6 files, 33696 bytes\n\nFiles: pipeline.md (16592b), recipes.md (31651b), skill-card.md (2011b), SKILL.md (11164b), troubleshooting.md (11508b), _meta.json (139b)\n\nArchive v1.0.12: 6 files, 33743 bytes\n\nFiles: pipeline.md (16592b), recipes.md (31651b), skill-card.md (2143b), SKILL.md (11164b), troubleshooting.md (11508b), _meta.json (139b)\n\nArchive v1.0.11: 6 files, 34036 bytes\n\nFiles: pipeline.md (16592b), recipes.md (31651b), skill-card.md (2815b), SKILL.md (11164b), troubleshooting.md (11508b), _meta.json (139b)\n\nArchive v1.0.10: 6 files, 34054 bytes\n\nFiles: pipeline.md (16592b), recipes.md (31651b), skill-card.md (2818b), SKILL.md (11164b), troubleshooting.md (11508b), _meta.json (139b)\n\nArchive v1.0.9: 6 files, 34298 bytes\n\nFiles: pipeline.md (16592b), recipes.md (31651b), skill-card.md (3401b), SKILL.md (11164b), troubleshooting.md (11508b), _meta.json (138b)","readmeExcerpt":"Skill: 知识付费讲师数字人 Course Avatar Owner: dlazyai Summary: Knowledge-course / online-teaching avatar lecturer — 16 landscape base-portrait recipes plus the slide-first pipeline that keeps a 20-minute lesson under 3000 credits. Use when the user wants a digital human to teach a paid course, a training module or a knowledge-sharing video on platforms like Xiaoetong, Tencent Classroom, Bilibili, YouTube or an internal LMS. ","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"1200 秒 × 23 = 27600 积分（驱动）"},{"language":"text","snippet":"110 秒 × 23 = 2530 积分（驱动）  ——  省掉 90.8%"},{"language":"text","snippet":"--size 2048x1152 --quality high   →  37 积分\n--size 3840x2160 --quality high   →  37 积分   ← 同价，直接用这个"},{"language":"bash","snippet":"dlazy gpt-image-2 --input @payload.json --save ./lecturer/base.png"},{"language":"text","snippet":"① 底图     gpt-image-2 (2000字) / seedream-5.0 (500字)   ← 提示词杠杆全在这\n② 讲稿     claude-sonnet-5 / qwen3.8-max                  ← 按 110~130 字/段切好\n③ 配音     qwen-tts (512字符上限) / doubao-tts            ← 全课必须同一音色\n④ 驱动     jimeng-omnihuman-1.5 (300字, ≤30秒@1080p)      ← 只做露脸段；单点依赖\n⑤ 课件     Remotion 模板 / gpt-image-2 出静态板           ← 正文主体在这\n⑥ 装配     dlazy chat --skill file-to-video               ← CLI 本身不做合成"},{"language":"bash","snippet":"dlazy login          # 设备码流程，自动保存 key\ndlazy auth set KEY   # 已有 key 时直接写入"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: dlazy-course-avatar\nversion: 1.0.0\ndescription: Knowledge-course / online-teaching avatar lecturer — 16 landscape base-portrait recipes plus the slide-first pipeline that keeps a 20-minute lesson under 3000 credits. Use when the user wants a digital human to teach a paid course, a training module or a knowledge-sharing video on platforms like Xiaoetong, Tencent Classroom, Bilibili, YouTube or an internal LMS.\nmetadata: {\"clawdbot\":{\"emoji\":\"🎓\",\"requires\":{\"bins\":[\"npm\",\"npx\"],\"env.optional\":[\"DLAZY_API_KEY\"]},\"install\":\"npm install -g @dlazy/cli@1.2.3\",\"installAlternative\":\"npx @dlazy/cli@1.2.3\",\"homepage\":\"https://dlazy.com\",\"configLocation\":\"~/.dlazy/config.json\",\"apiEndpoints\":[\"api.dlazy.com\",\"files.dlazy.com\"]},\"openclaw\":{\"systemPrompt\":\"When invoking this skill, read the 露脸预算 section of SKILL.md before quoting any cost, and read recipes.md before writing any base-portrait prompt. Run `dlazy <model> -h` to confirm current flags before building a command.\"}}\n---\n\n# 知识付费讲师数字人\n\n课程视频跟带货视频最大的不同：**观众来看的不是你的脸，是你屏幕上的东西。**\n\n这句话不是审美判断，是成本判断。`jimeng-omnihuman-1.5` 按音频秒数计费，1080p 是 **23 积分/秒**。一节 20 分钟的课全程用数字人驱动：\n\n```\n1200 秒 × 23 = 27600 积分（驱动）\n```\n\n而同样一节课，讲师只在开场、章节转场、结尾露脸（约 110 秒），其余画面是课件 + 配音：\n\n```\n110 秒 × 23 = 2530 积分（驱动）  ——  省掉 90.8%\n```\n\n算上配音，两条路线的**全成本**是 2640 对 27840，详见下面的\"露脸预算\"。\n\n**省下的 25000 积分不是靠妥协换来的，成片反而更像一门正经的课。** 全程一张脸对着你讲 20 分钟，是知识付费里完播率最差的形态之一。\n\n所以这个技能的核心不是\"怎么把数字人做得更真\"，而是**怎么把数字人用在该用的 110 秒上**，剩下的交给课件。底图配方解决前者，露脸预算解决后者。\n\n## 何时使用\n\n- 做小鹅通 / 腾讯课堂 / 知识星球 / B 站 / YouTube 的付费课或公开课\n- 企业内训、SOP 培训、新员工入职课程\n- 一门课几十节，需要**同一个讲师形象跨集稳定复用**\n- 已有 PPT / 讲义 / 文档，想变成有讲师出镜的课程视频\n- 真人讲师没时间录制，或需要多语言版本\n\n不适用于：单条知识口播短视频（用 `dlazy-short-video`，竖屏逻辑不同）、纯课件无讲师的文档转视频（直接 `dlazy chat --skill file-to-video`）、数学公式推导动画（那是 `math-explainer-video` 模板的活）。\n\n## 与带货版的根本差异\n\n如果你用过 `dlazy-ecommerce-avatar`，这五处是**不能照搬**的：\n\n| | 带货 | 课程 |\n|---|---|---|\n| 画幅 | 竖屏 9:16 | **横屏 16:9** |\n| 构图 | 人物居中 | **人物偏侧，留出内容区** |\n| 露脸 | 全程 | **只在开场/转场/结尾** |\n| 单集时长 | 30~60 秒 | **8~40 分钟**（要切几十段） |\n| 合规红线 | 广告法第九条（绝对化、疗效） | **广告法第二十四条**（升学承诺、通过率、资质） |\n\n尺寸参数尤其容易串。带货是 `--size 2160x3840`，课程是 `--size 3840x2160`——写反了不报错，出一张竖图，然后你会在装配那一步才发现。\n\n## 五条硬约束\n\n**1. 横屏直接上 4K，不额外花钱。**\n\n`gpt-image-2` 的计费**只看 `--quality` 和有没有参考图，完全不看 `--size`**（源码核对：`config/models/gpt-image-2.ts` 的 `costs`）。所以：\n\n```\n--size 2048x1152 --quality high   →  37 积分\n--size 3840x2160 --quality high   →  37 积分   ← 同价，直接用这个\n```\n\n横屏的 16:9 有两档（`2048x1152` / `3840x2160`），**竖屏只有 4K 一档**（`2160x3840`）。既然同价，中等档只在你需要小文件时才有意义。\n\n注意 `1536x1024` 是 **3:2 不是 16:9**，拿去做课程封面会被平台裁掉两边。\n\n**2. 底图要给内容留位置。**\n\n课程画面的左侧（或右侧）三分之二要放 PPT、板书、代码、图表。讲师站在剩下的三分之一里。\n\n这意味着底图**不能居中构图**——居中的人像叠上课件，要么挡内容，要么只能缩成一个小圆窗浪费掉整张 4K。配方 11 是为此专门写的，课程主力就用它。\n\n反过来，开场白和结尾这两段没有课件，用配方 12 的全画幅中近景，视觉上形成\"打招呼 → 讲内容 → 总结\"的节奏。\n\n**3. 一门课的底图必须一次定死。**\n\n带货可以每条视频换个人设，课程不行。第 3 节的讲师换了件衣服，观众立刻出戏。\n\n**开课前把底图存成文件，之后几十节全部引用同一个文件。** 不要指望同一段 prompt 能复现同一张脸——两次采样出的不是一个人。详见\"保持同一张脸\"。\n\n**4. 时长是硬上限，一节课要切几十段。**\n\n`jimeng-omnihuman-1.5` 的音频上限：**1080p ≤ 30 秒，720p ≤ 60 秒**。\n\n按每秒 4.5 字算（实测 `qwen-tts` 为 4.54~4.71 字/秒），30 秒"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"dlazy-course-avatar\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1791594160332\n}"},{"path":"pipeline.md","content":"# 完整流水线 · 从讲义到成片\n\n以\"一节 20 分钟横屏课程\"为例，逐步给出可执行命令。\n\n## 先定成片形态\n\n动手前先定这个，它决定了成本量级，改起来要重做。\n\n**A. 串行（推荐）** —— 讲师段与课件段前后接续，同一时刻只有一种画面：\n\n```\n[讲师 开场 30s] → [课件 正文] → [讲师 转场 10s] → [课件 正文] → … → [讲师 结尾 20s]\n```\n\n讲师只需驱动 110 秒 ≈ **2640 积分**。这是知识付费最主流的形态，也是本技能的默认路线。\n\n**B. 全程画中画** —— 课件铺满，讲师小窗常驻右下角：\n\n讲师要驱动满 1200 秒 ≈ **27840 积分**。**10 倍成本**，换来的只是一个六分之一大小的常驻人头。除非甲方明确要求，否则不值。\n\n**C. 局部画中画（折中）** —— 串行为主，只在 2~3 个关键讲解点让小窗出现 30 秒：\n\n比 A 多花约 2000 积分，换来\"讲师一直在场\"的感觉。做企业内训、需要强讲师存在感时用这条。\n\n下面按 **A** 展开，⑥ 里给出画中画的合成命令（C 用得上）。\n\n## 成本结构\n\n| 步骤 | 命令 | 积分 |\n|---|---|---|\n| ① 底图 | `gpt-image-2 --quality high` | 37（一门课一次） |\n| ① 派生机位 | `gpt-image-2 --images` | 60 × 2（一门课一次） |\n| ② 讲稿 | `claude-sonnet-5` | 个位数 |\n| ③ 配音 | `qwen-tts` **固定 6 积分/次** | 约 108 |\n| ④ **驱动** | `jimeng-omnihuman-1.5` 1080p × 110 秒 | **2530** |\n| ⑤ 课件 | `gpt-image-2` 静态板 × N | 37 × N |\n| ⑥ 装配 | 沙箱模板 / 自己 ffmpeg | — |\n| 单节合计 | | **约 2650** |\n\n底图那 157 积分（37 + 60×2）是**整门课一次性**的，摊到 30 节上每节 5 积分。\n\n**驱动占 95%。** 所以省钱只有一个方向：**砍露脸时长**，不是砍画质。\n\n## ① 底图\n\n从 `recipes.md` 选一条，先出正文主力机位（配方 11），再派生另外两个机位：\n\n```bash\n# 主力机位：右三分之一构图，左侧留给课件\ndlazy gpt-image-2 --input @payload/base.json --batch 4 --save ./lecturer/11-third.png\n\n# 从它派生开场/结尾用的全画幅（保住同一张脸）\ndlazy gpt-image-2 --images ./lecturer/11-third.png --input @payload/derive-full.json \\\n  --save ./lecturer/12-full.png\n```\n\n`--batch 4` 并行出 4 张选一张（积分 ×4 = 148）。**人脸一次难中，这个钱值得花一次**——选定后这张脸要用几十节课。\n\n出图后按 `recipes.md` 末尾的检查清单逐项过再往下走。带着一张不合格的底图，后面每一节课的驱动积分都是白花的。\n\n## ② 讲稿\n\n**关键：露脸段和正文段用两种切法。** 这是课程版最容易做错的一步。\n\n| | 切法 | 为什么 |\n|---|---|---|\n| 露脸段 | **110~130 字一段** | 受 omnihuman 的 30 秒硬上限约束 |\n| 正文段 | **写满 500 字符** | 不驱动，无时长约束；TTS 固定 6 积分/次，写满省钱 |\n\n中文口播约 **每秒 4.5 字**（实测 `qwen-tts` 为 4.54~4.71 字/秒），130 字 ≈ 29 秒，卡在 30 秒上限内安全。\n\n```bash\ndlazy claude-sonnet-5 --prompt \"为这门课的第 3 节写讲稿。\n主题：<本节主题>\n时长：20 分钟，共 6 个章节\n输出三类文本，用 === 分隔：\n1. 开场白：110 字以内，抛出本节要解决的问题，不要自我介绍和寒暄\n2. 章节转场 × 6：每条 45 字以内，承上启下，点出下一章要讲什么\n3. 正文讲解 × 6：每章一段，每段严格控制在 480 字以内（含标点），\n   语言口语化可直接朗读，有具体例子和数字，避免书面语和排比句\n4. 结尾总结：90 字以内，收束要点并给出下一节的钩子\n合规要求：不得出现升学率、通过率、保过、包会等承诺性表述，\n不得虚构任何机构背书、职称或从业资质\n输出纯文本，不要任何解释\"\n```\n\n最后那条合规要求是硬线，别删——原因见 `troubleshooting.md` 的\"教培合规红线\"。\n\n## ③ 配音\n\n`qwen-tts` 的 prompt **上限 512 字符，超出整次请求 400，积分不退**。\n\n`qwen-tts` 的输出是 **WAV 不是 MP3**（响应 URL 后缀为 `.wav`，文件头为 `RIFF/WAVE`）。`--save` 只决定本地文件名，不做转码——存成 `.mp3` 会得到一个扩展名骗人的 WAV 文件，第 ⑥ 步 ffmpeg 装配时按扩展名推断格式就会出错。**存成 `.wav`。**\n\n\n```bash\n# 露脸段（短，受驱动时长约束）\ndlazy qwen-tts --input @payload/tts-open.json  --save ./audio/open.wav\ndlazy qwen-tts --input @payload/tts-trans1.json --save ./audio/trans1.wav\n\n# 正文段（写满 500 字符，一次调用顶四次）\ndlazy qwen-tts --input @payload/tts-body1.json --save ./audio/body1.wav\n```\n\n`payload/tts-open.json` 形如：\n\n```json\n{ \"prompt\": \"<文本>\", \"voice\": \"Cherry\" }\n```\n\n音色选择：\n\n- `--voice Cherry`（默认，年轻女声）\n- `--voice Serena` / `Vivian`（成熟女声，适合人文、管理类）\n- `--voice Ethan` / `Ryan`（男声，适合技术、商业类）\n- 全部系统音色见 `dlazy qwen-tts -h`\n\n要更贴合人设的声音，用设计模式自然语言描述：\n\n```bash\ndlazy qwen-tts --generation_mode design \\\n  --voice_prompt \"40岁男性，语速平稳偏慢，讲课语气，重点处有自然停顿，不夸张\" \\\n  --prompt \"<文本>\" --save ./audio/open.wav\n```\n\n**整门"},{"path":"recipes.md","content":"# 底图配方库 · 知识付费讲师数字人\n\n16 条配方。A~C 组是讲师人像，D 组是课件视觉素材。每条都是可直接粘贴执行的完整命令。\n\n## 使用前必读\n\n**实测状态。** 本库的**参数**全部经源码核对（`config/models/gpt-image-2.ts` 与 `jimeng-omnihuman-1-5.ts` 的 zod schema 与 costs 函数），尺寸枚举、字数上限、计费系数可以放心用。\n\n**已实跑并逐张核对的三条**（2026-08-28，各跑一次一次命中，未重试）：\n\n| 配方 | 核对结论 |\n|---|---|\n| 01 · 纯色抠像位 | 背景纯色无渐变、发丝边缘锐利可抠，人物居中。裁切位比 prompt 写的\"胸口\"略低，不影响画中画使用 |\n| 11 · 右三分之一构图 | 人物中轴命中约 75%，左侧三分之二完全空旷、明度均匀，可直接叠课件。**\"百分之七十五\"这个写法确实有效** |\n| 14 · 章节封面板 | 无任何假文字混入（这条是本库最容易翻车的），三色配色与留白区都符合 |\n\n驱动链路也已端到端跑通：配方 11 底图 → `qwen-tts` → `jimeng-omnihuman-1.5 --resolution 720p` → 出片。\n\n**其余 13 条仍未实跑。** 第一次用时加 `--batch 4` 并逐张检查，特别是\"注意\"里标出的高风险项。发现偏差请回写到对应配方下面，这个库要靠使用积累。\n\n**配方结构。** 每条 prompt 按同一骨架写，改的时候按段改，不要整段重写：\n\n```\n身份气质 → 妆造服装(材质) → 姿态手部 → 表情眼神 → 景别构图(焦段/机位/留白区)\n→ 背景景深 → 光线方案(主光/补光/光比) → 色彩基调 → 画质质感 → 驱动约束\n```\n\n比带货版多出的是**留白区**——课程画面要给课件让位置，这一段决定了这张底图能不能直接用。\n\n最后那段**驱动约束**是 A~C 组共有的，删了就容易驱动失败：\n\n> 单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\n\nD 组不是人像，没有这一段。\n\n**尺寸速记。** 课程横屏一律 `--size 3840x2160`。计费不看尺寸（只看 `--quality` 和有无参考图），所以 4K 与 `2048x1152` 同价 37 积分，直接用 4K。**别写成 `2160x3840`**，那是竖屏。\n\n**省积分替代。** 主命令用 `gpt-image-2 --quality high`（37 积分），中文语境理解最准。预算敏感时换 `seedream-5.0`（4K 仅 **8 积分**）：\n\n```bash\ndlazy seedream-5.0 --prompt \"<同一条配方 prompt>\" --size 16:9 --resolution 4k --save ./lecturer/base.png\n```\n\n本库配方长度控制在 **500 字符以内**，卡在 `seedream-5.0` 的上限之内，可以原样粘过去。\n\n**同一人设的三个机位必须派生，不能各自生成。** 配方 11 / 12 / 13 是一门课的三个机位。先用 11 出底图存档，12 和 13 用 `--images` 从它派生（见每条的\"派生命令\"），否则你会得到三个长得不一样的老师。派生时积分从 37 涨到 **60**。\n\n---\n\n## A 组 · 讲台场景\n\n按课程调性选一条。\n\n### 01 · 纯色抠像位 ⭐ 画中画首选\n\n**适用**：要把讲师做成画中画小窗叠在课件上。纯色背景便于后期抠像或直接圆形遮罩。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 34 岁左右的亚洲女性课程讲师，气质专业亲和可信，妆容干净自然的职业淡妆，豆沙色哑光唇色，肤质自然真实保留皮肤纹理，不做过度磨皮。发型为黑色及肩直发梳理整齐，发丝边缘清晰锐利与背景分离明确。上身穿雾霾蓝色圆领针织衫，面料织纹细腻，剪裁合身简洁，无任何图案文字logo。姿态为站立正面朝向镜头，双肩放松水平，双手自然垂放在身体两侧完全不入镜。表情为温和的浅笑，嘴角自然，眼神平视镜头专注有交流感。景别为中近景半身像，85mm 中长焦，机位与视线齐平，人物居中，画面下缘裁切在胸口位置。背景为完全均匀的浅灰蓝色纯色无缝背景，无任何渐变纹理道具文字，人物与背景明度差明显便于边缘分离。光线方案为正面双侧对称柔光箱主光加顶部发丝光，光比 1.2:1，面部受光极其均匀无阴影，背景独立布光亮度均匀一致。整体色彩基调为干净的低饱和冷灰调。画质为专业摄影棚商业人像，细节锐利，发丝边缘干净。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/01-keyable.png\n```\n\n**注意**：背景**必须是纯色不能有渐变**——渐变背景抠像时边缘会发脏。`--quality high` 在这条上不能降，发丝边缘是抠像成败的关键。\n\n不推荐用纯绿幕：omnihuman 驱动后的视频经过压缩，绿边溢色比浅灰蓝更难处理。圆形遮罩方案见 `pipeline.md` ⑥。\n\n---\n\n### 02 · 书房知识博主\n\n**适用**：人文、商业、心理、写作类课程。知识付费最经典的场景，信任感最好建立。\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt \"一位 38 岁左右的亚洲男性知识课程讲师，气质儒雅沉稳有学识感，短发梳理整齐两鬓有少量自然白发，面部有真实的年龄纹理与皮肤质感不做美颜。上身穿深灰蓝色羊毛开衫内搭浅灰色圆领衫，面料质感厚实有织纹，剪裁松弛得体。姿态为坐姿正面朝向镜头，背部挺直微微前倾表现投入感，双手轻放在桌面边缘仅露出手腕不入画。表情为平和从容的微笑，眼神温和平视镜头有沉稳的说服力。景别为中近景半身像，50mm 标准镜头，机位与视线齐平，人物位于画面右侧三分之一处，左侧三分之二留出大面积干净的背景区域。背景为温暖的书房环境，身后是深胡桃木色书架与排列整齐的书籍脊背，全部被大光圈虚化成柔和的暖色块，书脊上无任何可读文字。光线方案为侧前方窗户自然光作主光柔和漫射，另一侧暖色台灯补光，光比 2:1，面部有自然明暗过渡。整体色彩基调为低饱和的暖棕木质调。画质为自然光人文肖像摄影，真实细腻有空气感。单人出镜，正面朝向镜头，五官完整清晰，嘴部与下巴无任何遮挡，双肩完整入镜，光线均匀柔和无硬阴影。\" \\\n  --size 3840x2160 --quality high --imageFormat png \\\n  --save ./lecturer/02-study.png\n```\n\n**注意**：书架是模型最爱自作主张写字的地方。prompt 已写\"书脊上无任何可读文字\"，出图后仍要**放大检查书脊**——生成"},{"path":"skill-card.md","content":"## Description:\n\nGuides creators through making landscape course videos with a consistent digital lecturer, reusable portrait recipes, narration, slides, and a cost-conscious production workflow.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCourse creators, educators, and training teams use this skill to plan and produce paid lessons, internal training, or knowledge-sharing videos with a recurring digital lecturer and slide-led instruction.\n\n### Deployment Geography for Use:\n\nGlobal (Chinese-language workflow with China-focused compliance guidance)\n\n## Known Risks and Mitigations:\n\nRisk: Course materials, prompts, images, and audio may be sent to dLazy services.\n\nMitigation: Confirm permissions and data-sharing requirements before submitting selected materials to the third-party CLI.\n\nRisk: Media generation consumes paid credits, especially for digital-lecturer footage.\n\nMitigation: Review the proposed workflow and current costs before generation, and limit lecturer footage to necessary segments.\n\nRisk: Course claims or lecturer credentials may be misleading or noncompliant.\n\nMitigation: Review educational claims and credentials before publication, including the skill's China-focused compliance guidance.\n\n## Reference(s):\n\n- [Course Avatar skill release](https://clawhub.ai/dlazyai/skills/dlazy-course-avatar)\n- [dLazy](https://dlazy.com)\n- [Production pipeline](pipeline.md)\n- [Portrait and slide recipes](recipes.md)\n- [Troubleshooting and compliance](troubleshooting.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration instructions]\n\n**Output Format:** [Markdown with command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guidance for producing scripts, portraits, audio, slides, and course-video clips; final video assembly requires a separate tool.]\n\n## Skill Version(s):\n\n1.0.18 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Knowledge-course / online-teaching avatar lecturer — 16 landscape base-portrait recipes plus the slide-first pipeline that keeps a 20-minute lesson under 3000 credits. Use when the user wants a digital human to teach a paid course, a training module or a knowledge-sharing video on platforms like Xiaoetong, Tencent Classroom, Bilibili, YouTube or an internal LMS. Skill: 知识付费讲师数字人 Course Avatar Owner: dlazyai Summary: Knowledge-course / online-teaching avatar lecturer — 16 landscape base-portrait recipes plus the slide-first pipeline that keeps a 20-minute lesson under 3000 credits. Use when the user wants a digital human to teach a paid course, a training module or a knowledge-sharing video on platforms like Xiaoetong, Tencent Classroom, Bilibili, YouTube or an internal LMS.","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1090,"uniquenessScore":51,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T09:22:38.413Z","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-11T09:22:38.413Z","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-11T11:26:13.004Z","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"}]}}}