# Material Strategy Assistant

> 金手指-广告素材专家——面向没有投放经验的小白用户，把"我要推广XX产品"变成一份可直接开工的素材策略（PDF 版《素材策略》，含需求分析 + 目标用户洞察 + 策略概览 + 逐条素材执行手册）。触发词：做广告素材、投放推广、生成创意策略、要创意方向/版位尺寸/数量规划。内置《腾讯广告投放全链路操作指引》本地知识库，无需任何 API Key。产出含关键洞察+创意类型推荐+素材数量测算三块策略；图片只在13种官方类型内选（常规海报/模拟朋友圈/小红书笔记/仿对话/数字人海报/公众号资讯/榜单素材/户外海报/备忘录/大字报/九图拼接/四图拼接/IP海报），视频分情景剧/单人口播/动图/混剪四类；数量与是否做视频由预算驱动。平台：腾讯广告系。

- Skill: `ahang1598/material-strategy-assistant` (Agent Skill, multi-file: 57 files)
- Install (CLI): `npx skillmds@latest add ahang1598/material-strategy-assistant`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ahang1598/material-strategy-assistant/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: ahang1598 (https://skillmd.com/u/ahang1598)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/ahang1598/material-strategy-assistant

---


## 何时用这个 skill

用户表达以下意图时使用：

- 想做广告素材，但不知道从哪下手
- 需要"素材策略""创意方向""版位怎么选""尺寸多大""要做多少素材"
- 已有产品信息，想生成投放创意需求

## 最终交付物：一份 HTML 版《素材策略》

本 skill 的最终产物是**一份结构清晰、重点明确、可离线打开的单文件 HTML 卡片**，不是零散的聊天表格，更不是依赖网络的网页。HTML = **策略本身 + 执行手册合一**，包含两大部分：

> 🚨 **品牌门面与组件规范（先记这条，详见文末「HTML 输出规范」）**：本工具品牌「**金手指·素材经理**」。交付物一律按本专家包内嵌的 `../html-report-card-suce/` skill（16 条硬规则）渲染：
> - 蓝色 banner 头部（主色腾讯蓝 `#0052D9`，banner 右上角带金手指 logo 白底 chip）+ brand-tag 写死「金手指·素材经理」；
> - 主体白底、章节标题用 `<h2 class="section-title">` + 蓝色序号 `01/02/03...`（无 h3 降级）；
> - 蓝色仅在 banner / 序号 / `.callout` / `pill-recommend` 处点缀，主体克制；
> - 文件名以 `金手指-广告素材专家_{产品名}素材策略_{YYYYMMDD}.html` 开头；落盘到用户当前工作目录；
> - **结尾固定「下一步建议」章节**（生成素材 → 准备文案 → 投放找金手指）。
>
> 该组件库完整规则见 `../html-report-card-suce/SKILL.md` 和 `../html-report-card-suce/references/design-rules.md`。所有视觉相关问题（banner / 表格 / callout / lead / 风险并列 / 决策分支 / markdown 残留自检）按那套规则执行，**不允许自创样式**。


**第一部分 · 素材策略**（🚨 融合成一块连贯输出，模块简短、不要大段文字；标题就叫「素材策略」，不是「投放策略」）

按下面固定顺序，每块**极简呈现**（能用一句话/三行表就不写成段落）：

> 🚨🚨🚨 **用户视角措辞铁律（最高优先级，贯穿整份输出）**：交付物是给**不懂投放的小白老板**看的，所有措辞都要**站在他的视角说人话**，禁止内部/投手/系统黑话。逐条对照：
> - "预算未过1万、没点名视频号" ❌ → "预算不超过1万、也没要求投视频" ✅
> - "透传占位 / 后置组装环节 / 由后续流程补齐 / 门槛 / 封顶 / 兜底 4:4:2" ❌ → 说人话（如"你的logo这轮先不放进画面，出图后再单独精准叠加""这轮先做图片，视频等你预算提上来或想投视频号时再补"）✅
> - 任何"参数条/标签"里只写一个孤立的值（如只写"高""中"）❌ → 必须带标签让人看懂（如"优先级：高"）✅
> 写完通读一遍：**每一句，一个没接触过广告投放的老板能不能看懂？** 看不懂就改。

> 🚨🚨🚨 **去重铁律（最高优先级，贯穿整份输出）**：**每个信息只讲一次，讲清后续不再重复**。三条具体落法，务必遵守：
> 1. **核心主张只在「创意思路和规划」出现一次**。执行手册开头**绝不再复述主张**。
> 2. **🚨 不单独立「做多少素材」板块**——优先级/数量/尺寸**直接标进「创意思路和规划」每张思路卡的一行小参数条**（如 `主推 · 6张 · 横16:9`），与该类型的"怎么传信息"大白话同卡呈现；**总量与要不要视频**用一句话融进创意规划开头。**绝不再单开一个板块或一张表重列类型/数量/尺寸**（那正是用户反馈的"案例库和做多少重合"）。
> 3. **执行手册开头不再介绍任何背景**（不复述主张、不复述素材组合），直接一句"照下表逐条做即可"然后进表。
>
> 🚨 **生成 HTML 时去除 SKILL.md 内的 emoji 🚨 / ❌ / ✅**：这些标记只在 SKILL.md 里辅助 agent 阅读，渲染进 HTML 时一律替换为语义颜色（`.callout` / `.callout-warn` / `.tag-ok` / `.tag-bad`）与标题词（建议 / 风险提示 / 红线 / 不建议）；html-report-card 规则 3 明确禁止在产物里使用 emoji。

1. **一句话目标**：把诉求翻译成一句话（推什么·给谁·撬动什么动作）。一句即可。可直接写成 `.callout` 单段高亮。
2. **目标 · 人群 · 产品分析**：用**三行式**简短展示——推广目标 / 目标人群 / 主打卖点，各一行。**不要展开成大段文字。** 推荐用 `table.data-table` 的 **KV 型两列表**（左列字段名如「推广目标」/「目标人群」/「主打卖点」，右列内容）。
3. **创意思路和规划**（🚨 唯一的策略板块，原"创意思路"+"建议做哪几类"+"做多少素材"三者全部合并到这里）：
   - 先给**一条核心主张**（加粗主张 + 一两句理由，即"创意思路"）——**这是主张唯一出现的地方**。推荐放在 section 内的首个 `.callout`（蓝色）。
   - 紧接一句**总量与视频**：把"按你的预算、投放天数和转化成本，大概配多少张素材、要不要视频"融进一句话（🚨 用户视角措辞，如"按你的预算和投放计划，先备 30 张图、这轮先不做视频（预算不到 1 万，先用图片把方向跑出来）"或"算下来配约 48 张图 + 10 条视频"），**不单独立标题、不展开成段**；可继续放在同一个 `.callout` 内或其后用 `<p class="lead">` 引出。
   - 再给**建议做哪几类素材**：每类用一张卡片，卡片含 **① 类型名（官方 13 类之一）② 一行小参数条：优先级 · 数量 · 尺寸（🚨 优先级必须带标签，写「优先级：主推」而非孤立的「主推」；如 `优先级：主推 · 6张 · 横16:9 1920×1080`）③ 一句「怎么给用户传信息」的大白话 ④ 一张该类型的标准样式示例图**（按第 2.5 步由 `fetch_case_samples.js` 落地后内嵌）。🚨 **参数就标在卡片上，不再另做一张配置表/另开一个"做多少"板块**。
   - 每张类型卡推荐用 `<table class="data-table">` + `<thead>`（类型名 / 优先级·数量·尺寸 / 怎么传信息），下方跟示例图 `<img>`（容器必须 `.img-frame`，`object-fit:contain` 防裁切；打印前 `inline_assets.js` 把图转 base64 不丢图）。

**第二部分 · 素材执行手册**（逐条可施工清单；🚨 标题固定「素材执行手册」）
- **🚨 开头不复述背景**：执行手册开头**不再介绍核心主张、不再复述素材组合**（前面都讲过了）。只用一句话过渡（如"照着下表逐条做即可，每条都配好了文案和可直接出图的生成提示词"），随即进表。
- **每条素材 1:1 逐条列出**：有 N 条素材就列 N 行。逐条表统一 **5 列**：**# · 创意类型 · 尺寸 · 文案 · 生成提示词**（🚨 不加"样式参考"列；不再用"素材大类"列）。
- **文案逐条生成**：素材数量是多少，就写多少条文案（1:1 配齐，不复用凑数）。视频行在"文案"列给脚本方向。
- **生成提示词：逐条真正输出**。执行手册里"生成提示词"这一列，按 `references/prompt_method.md` 对应类型的**典型提示词模板**，代入本项目产品/卖点/文案，逐条写出**完整可用的提示词**（不再填"建设中"）。视频行该列填 —。🚨 这一列**必须逐条填实**，别遗漏。
- **视频素材**：本轮**不生成视频物料（分镜/口播稿/旁白）**，但策略层**必须规划到位**——明确哪几类视频、各做几条、什么套路，保证策略不遗漏视频。

> 🚨🚨 **两条硬红线（面向用户输出时务必遵守）：**
> 1. **禁用内部黑话**：给用户看的任何文字里，**绝不出现「平台样式类 / 原生类 / 海报类 / 业务元素类」**这类内部分类名。这些只用于你内部选型判断；对用户一律翻译成**「怎么给用户传信息」的大白话**（如"做成公众号里的真实推荐图文""像朋友晒店，熟人口吻+评论互动"）。
> 2. **创意类型只能用官方 13 类原名**（常规海报 / 模拟朋友圈 / 小红书笔记 / 仿对话 / 数字人海报 / 公众号资讯 / 榜单素材 / 户外海报 / 备忘录 / 大字报 / 九图拼接 / 四图拼接 / IP海报），**严禁自行延展、改名或造新名**（如"探店笔记图/品牌海报/理由清单图/好友分享图"这类野生命名一律禁止）。
> 3. **标准样式示例图（已就位）**：凡出现创意类型推荐的地方都要内嵌该类型的**标准样式示例图**（平台案例库官方样例，第 2.5 步脚本落地、本地自动兜底）。**首次展示位置=第一部分「创意思路和规划」首次列出类型时，每类配一张。执行手册开头默认【不再重复】展示同一批样式图**（第一部分已展示过，重复会啰嗦；用户也明确反馈过"上面介绍过样式，下面不要再介绍"）。这些图仅示意**版式结构**，供用户参考"这类素材长什么样"。
>    🚨🚨 **图必须完整显示、严禁裁切**：case_samples 里横竖比例不一（常规海报/数字人/公众号/户外/IP 是横图 ~16:9；模拟朋友圈/榜单/大字报等是竖图 ~9:16）。内嵌时**绝不能用 `object-fit:cover`+固定高度**——那会把横图两侧、竖图上下切掉，导致"图片显示不完整"。正确做法：给一个**浅灰底、flex 居中的容器盒子**，图片用 `object-fit:contain; max-width:100%; max-height:100%`，让整张图完整装进盒子里（留白可接受，裁切不可接受）。
>    🚨🚨 **防分页裁切（卡片整体被切开）**：上面只是"图片本身不被切"，**但横向布局的卡片（图左文右）单张高度容易撞页边、被 PDF 分页从中切开**——结果是"图在上一页底部空白、文字在下一页顶部消失"，看起来更糟。**强制加 `page-break-inside:avoid; break-inside:avoid` 包裹整张卡片**（建议 .card 和 .card .img 容器都加），并把图区高度收到 max-height:200px 左右保证卡片整体高度更小。这条与"图本身不裁切"是两层不同的问题，都要防。
>    🚨🚨 **不丢图**：HTML 里样式图按**第 2.5 步脚本 `[RESULT]` 给出的实际文件名**（形如 `assets/case_samples/{类型}.webp`，扩展名以脚本输出为准）相对路径写即可，但**打印 PDF 前必须先跑 `scripts/inline_assets.js` 把它们转成 base64 内联**（详见文末「PDF 输出规范」的不丢图硬规则）。这保证换任何模型/机器/PDF 引擎（含不认 webp 的 wkhtmltopdf）都不会丢图。
>    🚨🚨 **图实在拉不到就走文字兜底**：若某类型的样式图平台和本地都没有（脚本标 `❌ 未获取到`），**不要留空图框**，改用 1-2 句话描述该类型版式特征代替（详见第 2.5 步「🚨 图拉不到时的文字兜底」）。

> PDF 生成方式见文末「PDF 输出规范」。每次跑完 skill，最终都要产出并交付这份 PDF。

## 核心工作流（4 步）

### 第 1 步：收集信息（不足就主动问）

小白用户通常在提问时把已有信息一股脑给你。你先从用户输入里提取，对照下面的**必备信息**清单，缺什么就用**一次性、选项化**的方式追问补齐（面向小白，别用术语轰炸）。

**必备信息（缺则必须问）：**

| 信息      | 为什么需要      | 追问方式（小白友好）        |
| ------- | ---------- | ----------------- |
| 产品/服务名称 | 素材主体       | "你要推广的产品是什么？"     |
| 所属行业    | 决定合规与默认人群  | 给几个行业选项让选         |
| 一句话卖点   | 关键洞察的核心    | "你的产品最打动人的一点是什么？" |
| 推广目标    | 决定创意方向与CTA | 选项：涨粉/引流/留资/卖货/曝光 |
| 总预算      | 算日预算、素材数、视频量 | "这个项目大概总预算多少？"（驱动数量测算，见第3步公式） |
| 预计投放天数  | 算日预算（总预算÷天数） | "打算投多少天？"（如 15 天 / 30 天） |
| CPA（预期单次转化成本） | 算广告数（日预算÷(CPA×20)） | "你能接受一次转化/下单大概多少钱成本？不清楚可给个大致范围"（不懂可帮判断，按行业给经验值兜底） |

> 🚨 **总预算 / 预计投放天数 / CPA 三者是新版数量公式的核心输入，缺一不可**（第3步「素材与物料数量测算规则」全靠它们算广告数→素材数→文案数）。缺失时必须问；用户实在给不出 CPA，可结合本 skill 内置指引 `references/tencent-ads-delivery-guide/references/general/general_metrics.md` 的行业经验值兜底，并明确告知这是估算。

**可选信息（不填给默认，不必都问）：**

- 投放渠道（不填→由本地指引按产品推荐；**有渠道要求时，按第3步查内置指引获取该渠道创意形式与视频建议**）
- 目标人群（不填→行业默认）
- 品牌资产：logo/主色/slogan/产品图/风险提示语（不填→行业通用调性；若提供，必须是干净原始素材，不要随手截图）

**品牌资产采集备注（给小白用户说清楚，如果没有的话，要提醒用户，这个可以跳过，但是最终投放还是需要）：**

| 资产             | 建议提供                      | 不建议                |
| -------------- | ------------------------- | ------------------ |
| logo           | 透明底 PNG / SVG / 高清原图，边缘干净 | 从海报、商品页、聊天记录里随手截图  |
| 产品图            | 高清产品实拍/官方图，背景干净，主体完整      | 带水印、压缩严重、截图裁切不完整的图 |
| 主色/品牌色         | 色值（如 #C9A063）或品牌规范截图      | 模糊截图里靠肉眼猜颜色        |
| slogan / 风险提示语 | 可复制文字原文                   | 只给一张糊图让系统识别文字      |

> 原因：品牌资产后续会用于后置组装环节做精确叠加。若用户随手截屏，容易出现清晰度不够、背景不干净、格式混乱、logo边缘毛糙、文字识别错误等问题。截图可作为参考，但**不要作为最终可用品牌资产**。

> 追问原则：必备信息缺失才追问，且**最多追问1-2 轮**、每轮给选项。可选信息一律先用默认值推进，不要为了凑齐信息反复打断小白。

### 第 2 步：需要版位/尺寸/渠道数据时，查本地投放指引

当要产出"模块B创意类型推荐"（选版位、定尺寸、定创意形式）时，**自动调用**封装脚本，从本 skill 内置的《腾讯广告投放全链路操作指引》本地知识库里抽官方口径数据，而不是拍脑袋、也**不再依赖腾讯广告妙问（无需任何 API Key）**：

```bash
node {baseDir}/scripts/query_placement.js '{"product":"手工香薰蜡烛","industry":"家居/香氛","sellingPoint":"助眠","audience":"25-40都市女性","goal":"购买转化"}'
```

- 脚本读取 `references/tencent-ads-delivery-guide/references/creative_inspiration_deep.md`「各版位适合的创意形式与爆款特点」章节，返回：推荐版位+理由、主跑尺寸/比例、创意形式、文案调性，并附原文版位规格表供核对。
- 输出含 `[PROGRESS]` 过程行和 `[RESULT]` 结果段，**取 `[RESULT]` 后的内容**用于组装策略。
- **退出码处理**：
  - `4 [INPUT_ERROR]`：入参缺失（至少要 product 和 sellingPoint）→ 补齐后重跑。
  - `5 [GUIDE_ERROR]`：未找到本地指引知识库 → 确认 skill 安装完整（`references/tencent-ads-delivery-guide/` 是否存在）。

> 数据全部来自本地打包文档，**用户不会因为缺妙问 Key 而拿不到版位/尺寸信息**。若脚本因故不可用，直接用 `references/brief_spec.md` 里的标准尺寸表（9:16 竖版 + 1:1 方图通吃）+ 上述本地指引原文兜底出策略即可。

### 第 2.5 步：拉取官方示例图（🆕 平台案例库，平台优先、本地兜底）

**两组官方示例图均已外置到平台案例库**（生产库 `creative_examples` 表，全平台共享一份，不属于任何项目），不再依赖 skill 包内文件作为唯一来源：
- **13 类标准样式示例图**（创意类型卡片/PDF 内嵌用）；
- **5 张版位结构示意图**（朋友圈/视频号/公众号/平台与内容信息流/开屏，讲「外层文案/转化按钮/首条评论」位置时内嵌用）。

**凡要内嵌示例图（第一部分类型卡片、版位结构示意、PDF），先跑这一步——🚨 这是硬步骤，不允许"以为调不到就跳过"**：

```bash
node {baseDir}/scripts/fetch_case_samples.js <绝对路径>/输出目录
```

> 🚨🚨 **关键认知（破除误解，务必牢记）**：本脚本走的是 **curl 直连 HTTP 端点**（`ad-goldfinger.app.fitgroup-fat.com/mcp`，JSON-RPC over HTTP），**不依赖 WorkBuddy 系统层是否挂载了该 MCP、也不需要 `ListMcpResources` 里出现它**。所以：即便你用 `ListMcpResources` 查不到金手指 MCP、即便你的工具列表里没有 `list_creative_examples` 工具——**只要直接跑这个脚本，照样能拉到图**（端点公开可直连、裸 curl 即通，无需 token/session）。**任何时候都应先实跑脚本看 `[RESULT]`，再判断能不能拿到图；绝不能凭"我环境没挂 MCP"就断定拉不到而跳过。** 脚本返回 18 条（13 风格 + 5 版位）即数据完整。
- **平台链路**：脚本 curl 直连该 HTTP 端点调 `list_creative_examples()`（无入参）→ 按 `title` 映射（先 13 类、后 5 版位）→ GET 各条 `file_url` 下载到输出目录：案例图落 `assets/case_samples/{类型}.{真实扩展名}`、版位图落 `assets/placement_structures/{版位}.{真实扩展名}`。平台更新后**无需改 skill**，每次运行自动拿最新版。
- **本地兜底（自动）**：平台不可用/表未灌数据/个别下载失败时，脚本自动回退复制 skill 内置的 `assets/case_samples/*.webp` 与 `assets/placement_structures/*.webp`，并在 `[FALLBACK]` 行说明；交付链路永远有图。
- **HTML 引用文件名以脚本 `[RESULT]` 输出为准**（平台文件的扩展名可能是 webp/jpg/png，不一定是 .webp）。
- **环境判定**：读生产库还是测试库由脚本连接的 MCP endpoint 决定（默认生产地址，可用 `--endpoint` 或环境变量 `CASE_EXAMPLES_MCP_URL` 覆盖）；`file_url` 域名由平台按请求头动态推导，无需也**不要**手工拼域名。
- 退出码：0=就绪（平台或兜底）；2=平台与本地双双不可用，须走下方「🚨 图拉不到时的文字兜底」，不要卡住流程。

> 🚨🚨🚨 **图拉不到时的文字兜底（最高优先级，务必执行）**：某张**案例样式图或版位结构图**如果**既没从平台案例库拉回来、skill 内置本地副本也缺失**（脚本该类型标 `❌ 未获取到`，或整体退出码 2），**绝不允许在交付物里留一个空白图框、破图占位符或"图片加载失败"字样**，也**不允许因此卡住不出 PDF**。正确做法：**在本该放该图的位置，改用 1-2 句话简要描述这类素材/这个版位长什么样、有什么视觉特征**，让用户照样能想象出它的样子，然后继续把 PDF 出完。
> - **案例样式图缺失** → 用 1-2 句话点出该创意类型的**版式特征**（构图/主视觉/文字排布/氛围），如「常规海报：横版单图，左侧放大字标题+副标题、右侧产品主视觉，留白干净、一眼看清主卖点」「模拟朋友圈：仿微信朋友圈信息流样式，头像+昵称+一段口语化正文配 1-3 张实拍图，像熟人发圈」。
> - **版位结构图缺失** → 用 1-2 句话描述该版位里**外层文案 / 创意图/视频 / 转化按钮 /（朋友圈才有的）首条评论**大致在什么位置，替代那张标注图。
> - 呈现方式：在原图位置放一个浅灰底小方框或一行斜体小字（如「〔样式示意（暂无样例图）〕：…描述…」），**保持排版不塌**；HTML 里就写这段文字，不要写指向不存在文件的 `<img>`（否则打印出破图）。
> - **优先级**：始终优先用真图（平台 > 本地副本），**只有真图确实拿不到时才降级到文字描述**；能拿到一部分就只对拿不到的那几张走文字兜底，拿到的照常放图。

### 第 3 步：产出策略（融合成一块「素材策略」，模块简短）

严格按内置规范 `references/brief_spec.md` 产出。**用中文表格/清单表达，不要用 JSON 代码块**；**每块极简，不写大段文字**。固定顺序：

1. **一句话目标**：一句话（推什么/给谁/撬动什么动作）。
2. **目标 · 人群 · 产品分析**：三行式——推广目标 / 目标人群 / 主打卖点，各一行。
3. **创意思路和规划**（🚨 唯一策略板块，"做多少素材"并入这里、不单开）：
   - **核心主张**：一条加粗主张 + 一两句理由（单一聚焦，贯穿全局，🚨 **只在此处出现一次**）。
   - **总量与视频（一句话）**：把"按公式算出的素材总张数、要不要视频"融进一句话（如"按你的预算和投放计划，配约 48 张图 + 10 条视频"或"先备 30 张图、这轮不做视频"），不单独立标题、不展开成段。
   - **建议做哪几类素材**：每类一张小卡片，含 ① 官方 13 类的**类型原名** ② **一行小参数条：优先级 · 数量 · 尺寸**（如 `主推 · 6张 · 横16:9 1920×1080`）③ 一句「怎么给用户传信息」的**大白话** ④ 一张**该类型标准样式示例图**（第 2.5 步脚本落地后内嵌）。🚨 **参数标在卡片上，不再另开"做多少素材"板块或配置表重列一遍**。
     > 🚨 **内部选型逻辑（海报类/原生类/平台样式类/业务元素类 见 `brief_spec.md` 2.7）只用于你自己判断该选哪几类，绝不写进给用户看的内容**；对用户一律翻译成大白话。视频套路同理。
   - **公式强驱动**：素材总量、文案条数、"是否做视频"按下方「素材与物料数量测算规则」用公式算出；满足视频条件时，在上面那句话里点出要做哪几类视频、各几条、为什么。

- **尺寸按创意类型定横/竖/方**（见 `brief_spec.md` 2.6）：榜单竖、常规海报横、公众号资讯横、数字人横、大字报竖、动图横、其他视频竖；整批横/竖/方**兜底约 4:4:2**。规格：竖 9:16 1080×1920 / 方 1:1 800×800 / 横 16:9 1920×1080。
- **数量与是否做视频由下方公式强驱动**，规则如下：

**素材与物料数量测算规则（🚨 公式驱动，唯一权威，务必遵守）：**

> 🚨 本规则以本 skill 为准，**不再参考其他 skill 的测算方式**。核心是先算「广告数」，再由广告数推出素材数与文案数。

**必备输入（缺则必须问用户，见第1步必备信息）：**
- **总预算**（元）
- **预计投放天数**（天）
- **CPA**（预期单次转化成本，元/次转化）

**四步公式（按顺序算）：**

1. **日预算** = 总预算 ÷ 预计投放天数
2. **广告数** = 日预算 ÷ (CPA × 20)　（结果向下取整；至少 1 条广告）
3. **素材数** = 广告数 × 3　~　广告数 × 5　（给一个区间，取中位数落地即可）
4. **文案数**：
   - **外层文案** = 广告数
   - **首条评论** = 广告数（仅朋友圈版位有首评；其他版位不产出首评）

**两条硬约束：**
- 🚨 **首次投放素材储备不低于 30**：若公式算出的素材数 < 30，**一律按 30 张兜底**（首投必须备够 30 条，避免素材不足跑不起量）。
- 广告数、外层文案、首条评论均**至少为公式算出值**，不低于 1。

**是否做视频（按有无渠道要求分流）：**

| 情况 | 是否做视频 | 视频数量 |
| ---- | ---- | ---- |
| **无渠道要求、无指定素材类型**，整体预算 **< 10000 元** | ❌ 不做视频 | — |
| **无渠道要求、无指定素材类型**，整体预算 **≥ 10000 元** | ✅ 做视频 | **视频数量 ≈ 素材总数 × 20%**（视频占比 20%，其余为图片） |
| **有渠道要求 / 指定素材类型**（如点名视频号、指定要做某类视频） | 按渠道要求 | **查本 skill 内置指引获取该渠道的创意形式与视频建议**（见下方「有渠道要求时」） |

> **有渠道要求时（务必查内置指引，不要拍脑袋）：** 当用户点名了投放渠道（视频号/朋友圈/公众号/平台与内容信息流/开屏等）或指定了素材类型，**读本 skill 内置的《腾讯广告投放全链路操作指引》**（已随 skill 打包，路径 `references/tencent-ads-delivery-guide/`，v2.4.0）获取该渠道适配的创意形式、视频规格与建议：
> - 版位/尺寸/创意形式：跑 `scripts/query_placement.js`（读 `creative_inspiration_deep.md`），或直读 `references/tencent-ads-delivery-guide/references/creative_inspiration_deep.md`「各版位适合的创意形式与爆款特点」。
> - 通用投放方法论（CPA/学习期/放量/素材衰退等）：读 `references/tencent-ads-delivery-guide/references/general/`（v2.4.0 新增，先看 `general_index.md` 路由）。
> - 🚨 该指引**已内置在 skill 内、随 skill 分发**，任何人装了本 skill 都能直接读，**不依赖任何外部临时文件路径**。

> 视频规划：需要做视频时，在策略里明确**要做哪几类视频（情景剧/单人口播/动图/混剪）、各几条、为什么**；条数以上表算出的「视频数量」为准。
> 🆕 **视频物料产出（仅当有视频需求时启用）**：一旦触发视频，执行手册阶段就**默认按 `references/video_script_method.md` 产出一份「完整视频脚本表」并入执行手册**（见「执行手册」表二），覆盖策略里已规划的那几条视频，**无需再单独询问用户**。**未触发视频时，本能力完全不启用，输出结构与原来一字不差。**

**测算示例（帮助理解公式）：**
> 总预算 20000 元、预计投放 30 天、CPA 100 元：
> ① 日预算 = 20000 ÷ 30 ≈ 667 元　② 广告数 = 667 ÷ (100×20) = 667÷2000 ≈ 0.33 → 向下取整不足 1，按至少 1 条广告 → **但首投素材储备不低于 30**，故素材按 **30 张**兜底；外层文案/首条评论按广告数（此例偏低，实操中广告数常为个位数到十几条）。
> 若 CPA=30、天数=15：日预算=1333，广告数=1333÷600≈2 → 素材=2×3~2×5=6~10 张 → 不足 30，**按 30 兜底**；外层文案=2、首条评论=2。
> 若日预算大、CPA 低使广告数达 12：素材=12×3~12×5=36~60 张（取中位≈48）、外层文案=12、首条评论=12；预算≥1万且无渠道要求 → 视频≈48×20%≈10 条。

### 第 4 步：交付 PDF 并衔接下游

- 先把三块策略在对话里过一遍给用户确认，用大白话解释"这份东西能干嘛"。
- 确认后，**按文末「PDF 输出规范」生成最终 PDF**（策略解读 + 执行手册合一），用 present_files 交付。
- 说明下游：这份策略选好了创意类型，带每类型的画面规范与文案规范；据此**逐条生成图片文案与其他文案**（外层文案/图片文案/首条评论/CTA），文案须遵循 `references/copywriting_method.md` 的写作规范与合规红线，并可对照本地指引 `references/tencent-ads-delivery-guide/references/review_compliance_deep.md` 做合规自检。
- **生图提示词已启用**：执行手册里"生成提示词"列按 `references/prompt_method.md` 的类型模板逐条写实；如用户要直接出图，走该文件的三级生图链路（L1 内置 → L2 已配 key 模型 → L3 索要 key）。

## 关键原则

1. **替小白决策，别抛术语**：版位/尺寸/创意形式尽量自动定，用户只做"要不要"的确认。
2. **一图一卖点**：关键洞察的核心信息必须单一聚焦。
3. **数据有据可依**：版位/尺寸来自本地投放指引知识库（官方口径整理稿），不随机推荐。
4. **公式驱动数量与视频**：素材数、文案数、是否做视频严格按第3步公式（广告数=日预算÷(CPA×20)→素材=广告数×3~5→文案=广告数；首投素材≥30），不拍脑袋。
5. **文案 1:1 逐条配齐**：有多少素材就写多少条文案，不复用凑数。
6. **生图提示词已启用**：执行手册"生成提示词"列按类型模板逐条写实、可据此出图；模板见 `references/prompt_method.md`。
7. **最终交付 PDF**：结果是一份结构清晰的 PDF，不是零散聊天表格。
8. **logo/风险语只透传**：不参与生成，留待后置「妙思」组装。

## 进阶：从策略生成"素材执行手册"

当用户要的不只是策略、而是一份**可直接照着做的执行手册**时，按下面执行。**图片文案/外层文案/首评/按钮的写法一律遵循 `references/copywriting_method.md`**。生图提示词按 `references/prompt_method.md` 的类型模板逐条写实。

1. **创意类型选择（🚨 图片只能在固定 13 种范围内选，不许自行命名）**：结合产品线、核心卖点、目标人群，从下方**13 种官方图片创意类型**里选最合适的 2-3 种，**不得自创或改写类型名**（如"场景海报""橱窗主副图""人物海报"等野生命名一律不用，须归到 13 种里最接近的那一种）；若预算/渠道触发视频，再从 情景剧/单人口播/动图/混剪 里规划视频类型。
   > **13 种官方图片创意类型**（权威范围，见 `references/copywriting_method.md` 的「各类型文案规范」与 `references/prompt_method.md` 的「各类型画面规范」）：
   > 常规海报 · 模拟朋友圈 · 小红书笔记 · 仿对话 · 数字人海报 · 公众号资讯 · 榜单素材 · 户外海报 · 备忘录 · 大字报 · 九图拼接 · 四图拼接 · IP海报
   >
   > 选定类型后，**每种类型对齐三样东西**：① 该类型的**画面规范 + 典型提示词模板**（`prompt_method.md`）；② 该类型的**文案规范**（`copywriting_method.md`）；③ 该类型的**标准样式示例图**（第 2.5 步 `fetch_case_samples.js` 落地，平台优先、本地兜底）。
2. **图片文案（逐条 1:1 生成）**：图片文案按 `copywriting_method.md` 里**对应创意类型的文案规范**写（不同类型的文案结构/字数不同）；**素材数量是多少就写多少条**。生图提示词按 `prompt_method.md` 对应类型的模板逐条写实，代入本条文案原文。
3. **🆕 先给小白讲清这几个文案位长什么样（写这几类文案前必做，破除术语门槛）**：小白往往不知道「外层文案 / 转化按钮 / 首条评论」在广告里长什么样、在哪个位置。**在开始量产这几类文案之前，先结合本地投放指引把该行业·该版位的真实广告样式讲清楚**，让用户直观对照，再动笔写。
   > 🚨 **位置**：这一步产出的「组件含义说明 + 样式说明 + 结构示意图」属于**投放前动作**，在交付物里应落在文末「下一步建议 → 投放前动作 · 文案与按钮」小节，**不要放进执行手册主体（表一）之中**。
   做法：
   - **① 先简要说明各组件含义（必做）**：结合本项目策略选定的投放版位，用大白话先解释这几个组件是什么、干什么用（外层文案=先勾住人往下看的那句话 / 转化按钮=图上可点的按钮，决定点了去哪 / 首条评论=仅朋友圈，图下第一条评论，补氛围或福利）。**只讲当前版位有的组件**，别把该版位没有的（如开屏没有外层文案、公众号/视频号/资讯流/开屏没有首评）也讲进去。
   - **② 用本地指引说清该版位样式与爆款特点**：读 `references/tencent-ads-delivery-guide/references/creative_inspiration_deep.md`「五、各版位适合的创意形式与爆款特点」+「二、高转化文案写法（6 类钩子）」，据此告诉用户该版位外层文案的**长度、口吻、信息结构**（如朋友圈文案上限约 30 字、强广告属性开头、吸睛首帧公式），并结合 `copywriting_method.md` 的规范给出示范文案。**数据来自本地知识库，无需任何妙问 Key。**
   - **本地指引能给什么、不能给什么（如实告知用户，别过度承诺）**：
     - ✅ **能给**：该版位的**官方样式规格、爆款特点、文案写法与 6 类钩子**，以及据此改写出的**示范外层文案**——足够指导用户写出合规、贴版位的文案。
     - ❌ **不含**：某条真实在投广告的**素材预览截图**（本地知识库是规范文档、不含实时素材库）。用「样式与写法说明 + 版位位置说明 + 内置版位结构示意图」补足，不要假装有真实投放截图。
   - **③ 交付给用户**：**直接内嵌对应版位的官方结构示意图**（第 2.5 步 `fetch_case_samples.js` 落地、本地兜底，已把 ①外层文案 ②创意图/视频 ③转化按钮 ④首条评论 的位置标注好、并自带免责备注），按当前主投版位选对应那张。**不再手绘 SVG。** 版位与图片对应关系：
     > | 主投版位 | 内置结构图 |
     > | --- | --- |
     > | 微信朋友圈 | `assets/placement_structures/朋友圈.webp` |
     > | 视频号信息流 | `assets/placement_structures/视频号.webp` |
     > | 微信公众号 | `assets/placement_structures/公众号.webp` |
     > | 平台与内容类信息流（腾讯新闻/视频等） | `assets/placement_structures/平台与内容信息流.webp` |
     > | 开屏 | `assets/placement_structures/开屏.webp` |
     >
     > 🚨 **多版位就并排放多张**（投了朋友圈+视频号就放这两张）。图片已含免责备注，无需再手写；HTML 里按**第 2.5 步脚本 `[RESULT]` 给出的实际文件名**（形如 `assets/placement_structures/{版位}.webp`，扩展名以脚本输出为准）相对路径引用，打印 PDF 前由 `inline_assets.js` 统一内联（同 case_samples）。
     > 🚨 **版位结构图拉不到就走文字兜底**：若某版位结构图平台和本地都缺失，**不要留空图**，改用 1-2 句话描述该版位里外层文案/创意图/转化按钮/首条评论大致在什么位置代替（详见第 2.5 步「🚨 图拉不到时的文字兜底」）。
4. **转化按钮**：转化按钮文案是平台固定选项，须落地页能完成对应动作。可参考本地指引 `references/tencent-ads-delivery-guide/references/landing_page_deep.md` 与 `promotion_product_deep.md` 里的按钮/落地页对应关系，结合本项目目标给推荐（如卖货类"立即购买/立即抢购"、留资类"立即咨询/预约报名"）；实际可选列表以投放后台为准。
5. **外层文案 & 首条评论**：按 `copywriting_method.md` 量产——**数量按第3步公式：外层文案 = 广告数、首条评论 = 广告数**（首评仅朋友圈才有）。**动笔前先对照上一步本地指引讲的该版位样式与 6 类钩子**，模仿其外层文案的长度、口吻、信息结构，再结合本项目卖点改写。
6. **投放前审核自检**：文案拟好后，对照本地指引 `references/tencent-ads-delivery-guide/references/review_compliance_deep.md`（含通用素材审核细则、内容红线、分行业审核细则、高频拒审原因）逐条自检，按其红线修订后再定稿。**合规靠本地审核规范把关，不再调妙问。**

> 本进阶流程**全程使用本 skill 内置的本地投放指引知识库**（`references/tencent-ads-delivery-guide/`），不再依赖腾讯广告妙问（tencent-ads-assistant）或任何 API Key。

## 生图提示词与出图（已启用）

> ✅ **当前状态：已启用。** 13 类「典型提示词模板」已补齐，执行手册的"生成提示词"列**逐条真正写实**。用户需要直接出图时，走下面两段式流程 + 三级生图链路。完整规则见 `references/prompt_method.md`。

### 第 1 段 · 打磨提示词
- 直接取 `prompt_method.md` 对应类型的**典型提示词模板**，把本项目产品主体/卖点/人群/图片文案原文代入 `{}` 占位；文案原文加引号、单独起段。
- 复杂场景（数字人/IP/户外等）可先走「提示词优化」方法（读取本地参考资料 `references/prompt-optimizer/prompt-optimizer.md`）用 SOCAWT 六维补齐，再按 `prompt_method.md` 做降复杂度收敛。
- 代入后**叠加「素材通用要求」**（不出现多余文字、无 logo、不变形、文字落在 20%–80% 安全区、底图满幅出血、内容为中文、风格维度随机组合）一起送去生图。

### 第 2 段 · 三级生图链路（按顺序降级）

|   级别   | 渠道                   | 何时用                        |
| :----: | -------------------- | -------------------------- |
| **L1** | **WorkBuddy 内置生图能力（ImageGen）** | **默认首选**，无需任何 API Key，直接调用 |
| **L2** | 用户已配好 key 的模型        | L1 失败时自动降级；先跑探测脚本再调用       |
| **L3** | 提醒用户输入 API Key       | 用户点名了某模型，或 L1 失败且 L2 无可用渠道 |

L2 探测：`node {baseDir}/scripts/detect_image_channels.js`（退出码 0=有可用渠道取 `[RESULT]`，1=进 L3）。

> 用户点名模型时对应关系：追求质量优先 **GPT Image 2**、其次 **Nano Banana Pro**；追求效率用**混元**。

**Key 红线**：API Key 只在当次命令/环境变量中使用，**绝不写入任何 skill 文件、策略、执行手册或日志**，也不回显 key 内容。

### 🚨 出图文件命名规范（用户确认策略后直接出图时强制）

用户确认策略、直接选某模型出素材时，**每张落地素材的文件名必须规范化**，四段格式：

```
{项目名称}_{素材类型}_{生成时间}_{生成序号}.{扩展名}
```

- **项目名称**：产品名（特殊符号安全化，如 `固收+`→`固收plus`）。
- **素材类型**：官方 13 类图片类型 / 4 类视频类型原名，**与执行手册「创意类型」列一致，禁自创**。
- **生成时间**：`YYYYMMDDHHmm`，🚨 用 `date +%Y%m%d%H%M` 实时取，不手算。
- **生成序号**：同批次从 `01` 起两位递增。

示例：`手工香薰蜡烛_榜单素材_202608221530_01.png`、`手工香薰蜡烛_单人口播_202608221531_01.mp4`。草图可不强制，**终图/交付素材必须按此命名**。完整说明见 `references/prompt_method.md`「出图文件命名规范」。

## 执行手册：直接进表（🚨 不复述背景，只到表一为止）

**🚨 执行手册开头不复述任何背景**：核心主张、素材组合前面都讲过了，**不要再概括一遍**；标准样式示例图第一部分「创意思路和规划」已展示过，**执行手册开头默认不再重复展示**（用户明确反馈过"上面介绍过样式，下面不要再介绍"，重复=啰嗦）。开头只用**一句话过渡**（如"照着下表逐条做即可，每条都配好了文案和可直接出图的生成提示词"），随即进「表一」。

> 🚨🚨 **结构调整（务必遵守，来自用户反馈）**：执行手册主体**只到「表一 · 素材制作总表」为止**（有视频时再加「表二 · 完整视频脚本表」）。原来夹在其后的**「版位与文案位科普 + 结构示意图」整段、以及「文案与按钮汇总表」，全部后移到文末「下一步建议」的"投放前动作 · 文案与按钮"小节**。原因：那段科普和文案汇总表会打断用户"看素材、看提示词"的连贯阅读；让用户先把"生成素材"这一件事读完，等真要准备文案时，再在投前动作里遇到这段解释和汇总表，一次解决一个问题。

**表一 · 素材制作总表**（🚨 固定 5 列，每条素材逐条 1:1 列出；执行手册主体到此为止）

| # | 创意类型 | 尺寸 | 文案 | 生成提示词 |
| :-: | ---- | ---- | ---- | ---- |
| 1 | 榜单素材 | 竖 9:16 1080×1920 | 主标题：为什么选…｜①…②…③…（逐条展开） | 竖版9:16榜单海报，顶部大标题+副标题横幅，下方3张白色圆角卡片，每张=圆形小图标+理由标题+说明+红色五星+淡色大序号…画面上的文案：主标题"…" 理由一"…"★★★★★（完整提示词逐条写） |
| 15 | 常规海报 | 横 16:9 1920×1080 | 主：…｜副：… | 横版16:9海报，底图为…简约留白，左文右图…画面上的文案：主标题"…" 副标题"…"（完整提示词逐条写） |
| V1 | 单人口播 | 竖 9:16 | 脚本方向：痛点开场→讲配置理念→行动引导（🆕 完整脚本见下方「表二」） | — |

> 🚨 列序固定为 **# · 创意类型 · 尺寸 · 文案 · 生成提示词**（不加"样式参考"列、不用"素材大类"列）。「创意类型」只能填 13 种官方图片类型之一或 情景剧/单人口播/动图/混剪；**严禁自创类型名**。
> **尺寸按类型定横/竖/方**（见 `brief_spec.md` 2.6），标注方向 + 高清标准值。
> **每条素材逐行展开**，文案 1:1 逐条写；视频行在"文案"列给脚本方向、"生成提示词"列填 —（完整视频脚本见表二）。
> 「生成提示词」列**逐条真正写实**：按 `prompt_method.md` 对应类型的典型提示词模板，代入本条产品/卖点/文案原文，写出完整可用提示词；视频行填 —。🚨 这一列必须逐条填实、别遗漏。

**🆕 表二 · 完整视频脚本表（🚨 仅当本项目有视频需求时才出现；无视频则整节不存在）**

> 🚨🚨 **出现条件**：仅当第3步判定要做视频（无渠道要求时预算 ≥1万、或有渠道要求/指定要视频）时，才在表一之后追加本表；**无视频需求时本节完全不存在**，执行手册主体仍只到表一为止，输出与原来一字不差。
> 内容与格式**严格按 `references/video_script_method.md`**：覆盖策略里已规划的那几条视频（类型/条数一致，不多不少），演员**只给提示词不实际生图**。同一张表，4 列：

| # | 视频类型 | 演员图片生成提示词（真人版） | 分段视频提示词（每段独立自带质感词+视觉锚点，复制单段即可进平台生成） |
|:-:|---|---|---|
| V1 | 单人口播 | 【演员A·真人版】…真人形象提示词… | 【段1】（0-13s）[质感词全文]。[视觉锚点]同演员/同景别/同机位/同场景/同光线。画面：中景不动，靠表情手势推进。"…"<br>【段2】（13-28s）[质感词全文]。[视觉锚点]（与段1一字不差）。"…" |
| V2 | 情景剧 | 【演员A·真人版】…<br>【演员B·真人版】… | 【段1】（0-15s）[质感词全文]。[视觉锚点]双人同场景/同景别/同机位。画面：…。A："…" B："…"<br>【段2】（15-30s）…<br>【段3】（30-42s）… |

> 🚨 视频类型只填官方四类：情景剧/单人口播/动图/混剪，条数与策略规划完全一致。编号用 V1、V2…承接表一。
> 🚨 演员：先固定演员阵容（去重），每人一版真人形象提示词；本方法**不调用生图工具、不实际出图**（与图片素材的三级生图链路互不影响）。真人写实视频默认垫真人定妆图。
> 🚨🚨 **视频输出分辨率备注（务必写给用户）**：本表只出提示词，用户拿去生成视频时——**信息流广告 720p 够用，条件允许上 1080p 更清晰**。在表二下方加一行说明（如"视频建议输出：信息流广告 720p 够用，1080p 更好"），提醒用户生成时按此设置。
> 🚨 **分段视频提示词严守「分镜三条铁律」**（详见 `references/video_script_method.md` 第一节）：① 段长 12-15s、整片压到 2-3 段（别再 6s 一段让用户跑太多次）；② 段间衔接**删掉"承接上段"**（模型读不懂），改用每段写死一行**完全相同的 `[视觉锚点]`**（同演员/景别/机位/场景/光线）；③ **场景不变就全程锁同一景别**，不为节奏硬切。每段自带完整质感词，可独立复制进平台生成，各段拼成片。

## 投放前动作 · 文案与按钮（🚨 位置：文末「下一步建议」第 2 条，不在执行手册主体内）

> 🚨 本小节整体承接「下一步建议」的第 2 条"投放前动作·准备文案与按钮"。**它不再放进执行手册主体**，而是等用户把"生成素材"读完、准备处理文案时才出现，避免打断看素材/提示词的连贯阅读。顺序：先科普（这几个是什么、在哪）→ 再内嵌版位结构示意图 → 最后给「文案与按钮汇总表」。

**第 1 步·版位与文案位科普（面向小白，强制）**：先给用户普及"一条完整文案由哪几部分组成"。小白往往只知道"素材/图"，不知道还要配外层文案、按钮等。**科普内容随策略已确定的投放版位动态生成**（策略里投了哪些版位，就讲哪些版位的组件，别把该版位没有的组件也讲进去）：
- **开场一句话**：`除了素材本身，一条完整的广告文案通常还需要「外层文案」和「转化按钮」；如果投微信朋友圈，还多一个「首条评论」。它们的位置示意如下：`（按实际版位增减组件——如未投朋友圈就不提首条评论；纯资讯流/开屏版位按 `copywriting_method.md` 的版式说明调整）。
- **逐条大白话解释**（只讲当前版位有的组件）：外层文案=用户刷到广告时头像下面那句话，负责 1 秒勾住人往下看；转化按钮=图上/图右下角那个可点的按钮（如"立即购买"），决定点了跳去哪，**文字从平台固定列表里选、不能自定义**，选什么落地页就得能完成对应动作；首条评论（仅朋友圈）=图片正下方第一条评论，补一句氛围或福利。

**第 2 步·内嵌对应版位的结构示意图（用官方样例图，不再手绘 SVG）**：按**本项目实际主投版位**，直接内嵌对应版位结构示意图（第 2.5 步脚本落地、本地兜底），图上已把 ①外层文案 ②创意图/视频 ③转化按钮 ④首条评论 的位置标注清楚、并自带免责备注。版位与图片对应：

| 主投版位 | 内置结构图 |
| --- | --- |
| 微信朋友圈 | `assets/placement_structures/朋友圈.webp` |
| 视频号信息流 | `assets/placement_structures/视频号.webp` |
| 微信公众号 | `assets/placement_structures/公众号.webp` |
| 平台与内容类信息流（腾讯新闻/视频等） | `assets/placement_structures/平台与内容信息流.webp` |
| 开屏 | `assets/placement_structures/开屏.webp` |

  > 🚨 **多版位就并排放多张**（投了朋友圈+视频号就放这两张）；只放当前策略实际投的版位，别贴无关版位。
  > 🚨 **图片已自带免责备注**（「此图为结构示意…以投放后台的广告配置与预览为准」），无需再手写；也无需自己画框标注。
  > 🚨 **内嵌方式**：HTML 里按**第 2.5 步脚本 `[RESULT]` 给出的实际文件名**（形如 `assets/placement_structures/{版位}.webp`，扩展名以脚本输出为准）相对路径引用，打印 PDF 前由 `inline_assets.js` 统一内联（同 case_samples，webp 会自动转 png，不丢图）。
  > 🚨 **拉不到就文字兜底**：若该版位结构图平台和本地都没有，**别留空图**，改用 1-2 句话说明外层文案/创意图/转化按钮/首条评论各在什么位置代替（详见第 2.5 步「🚨 图拉不到时的文字兜底」）。

**第 3 步·文案与按钮汇总表**（科普与示意图之后再给）

| 类别   |  数量 | 内容                   |
| ---- | :-: | -------------------- |
| 外层文案 |  = 广告数 | 逐条列出（已过审）            |
| 首条评论 |  = 广告数  | 逐条列出（已过审，走氛围/生活态度方向；仅朋友圈有） |
| 转化按钮 |  1  | 主选+ 备选（平台固定可用列表内，以投放后台为准）      |

> 🚨 外层文案/首条评论条数 = 广告数（第3步公式算出），不再写死 10/5。

## HTML 输出规范（🚨 与 `../html-report-card-suce/` 组件库深度绑定）

🚨🚨 **品牌门面规范（所有输出物强制遵守，最高优先级）**：本工具品牌「**金手指·素材经理**」。任何交付物的**文件名开头**和**banner 头部**，都要先亮出工具品牌，再接具体策略名。

- **🚨 渲染框架 = html-report-card skill（强制）**：本产物**严格按本专家包内嵌的 `../html-report-card-suce/` skill 规范生成**，包括但不限于：
  - 骨架 = `../html-report-card-suce/assets/template.html`，CSS = `../html-report-card-suce/assets/theme.css`（**两者都要内联**，单文件离线可看）；
  - 16 条硬规则不容违反（lead 不加前缀 / 风险并列走 plain-list / 决策分支用 tag-* / 表格 KV 型带 thead / 蓝黄不混排 / 无 markdown 残留 / h3 禁止降级 / 序号连续 / brand-tag 整段照抄不简写 / icon 仅 banner meta 等）；
  - 自检 = `python3 ../html-report-card-suce/scripts/check_html.py <文件>`，**必须 0 error**；
  - 完整规则见 `../html-report-card-suce/references/design-rules.md` 与 `../html-report-card-suce/SKILL.md`。
- **主色 = 腾讯蓝 `#0052D9`**：`theme.css` 的 `--brand / --brand-deep / --brand-soft` 三个变量默认就是这套，**不要改**。
- **🚨 brand-tag（写死，不许改）**：`template.html` 的 `<p class="brand-tag">` 已写死为 **`金手指·素材经理`**（`<span class="sep">` 分隔），整段照抄、不得简写、不得加版本号、不得改顺序（html-report-card 规则 16 硬约束）。
- **🚨 右上角品牌 logo**：`<img class="brand-logo">` 引用 `assets/brand/logo.png`（透明 PNG，金手指 Q + 金手指字 + AI·Ad Agent；由 `.brand-logo` 白底圆角 chip 解决「蓝 Q 撞蓝渐变 banner」的可读性问题）。
- **文件名格式**：`金手指-广告素材专家_{产品名}素材策略_{YYYYMMDD-HHMM}.html`（如 `金手指-广告素材专家_手工香薰蜡烛素材策略_202608241815.html`）。
  > 文件名避免特殊符号：`固收+` 之类的 `+` 在文件名里易出问题，落地文件名用 `固收plus` 等安全写法。
- **输出路径**：**用户当前工作目录** `$(pwd)`（**不写进 skill 包内部**——那是只读资源，分享时会带上他人的产物）。

> 🚨🚨🚨 **不丢图硬规则（最高优先级）**：HTML **绝不能靠相对路径引用本地图片**（`assets/xxx.webp` 这种）——那是历史上丢图的头号原因（换浏览器/换机器/sandbox 路径不一致都会让图静默变空白）。**预览/分享/打印前都必须先把 HTML 里所有本地图片（case_samples 样式图 + placement_structures 版位图 + 金手指 logo）转成 base64 内联**。用本 skill 自带的脚本一步搞定（自动 webp → png 兼容所有浏览器）：
> ```bash
> node {baseDir}/scripts/inline_assets.js <绝对路径>/strategy.html <绝对路径>/strategy.inlined.html
> ```
> 脚本输出 `[RESULT] 已内联 N 张图片…全部命中` 即成功；若出现 `[MISS]` 说明某图路径没找到，**必须先修好路径/补上文件再重跑，不允许带着 MISS 交付**。**预览/分享一律用 `strategy.inlined.html`**（不是原 strategy.html）。

> 🚨 **emoji 在产物里禁用**：本 SKILL.md 大量用 🚨 / ❌ / ✅ 帮助 agent 阅读；**渲染进 HTML 时必须一律去掉**，改用 `.callout`（蓝/黄 2 色）+ `.tag-ok / tag-warn / tag-bad` 字色 + 标题词（建议/口径/红线/风险提示）。html-report-card 规则 3 明文禁止 emoji。

**生成方式（推荐链路，🚨 三步，缺一不可）：**
1. 先把「策略解读 + 执行手册」组织成一份结构化 **HTML**（按 `../html-report-card-suce/assets/template.html` 组装，把 `theme.css` 全文内联进 `<style>`；样式图按**第 2.5 步脚本 `[RESULT]` 的实际文件名**引用，若尚未跑先补跑 `fetch_case_samples.js`；下一步会统一内联）。
2. **🚨 内联图片（不可跳过）**：`node {baseDir}/scripts/inline_assets.js <绝对路径>/strategy.html <绝对路径>/strategy.inlined.html`，确认 `[RESULT] 全部命中`、无 `[MISS]`。
3. **可选：如需打印 PDF**：用无头浏览器把**内联版** HTML 打印为 PDF（路线保留，不强制）。示例：
   ```bash
   "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
     --headless=new --no-sandbox --disable-gpu --disable-software-rasterizer \
     --no-pdf-header-footer \
     --print-to-pdf="金手指-广告素材专家_{产品名}素材策略.pdf" "file://<绝对路径>/strategy.inlined.html"
   ```
   因已内联为 base64，Chrome / weasyprint / pandoc 等任何引擎都不会丢图。**默认仅交付 HTML，PDF 打印留给用户按需触发**。
4. **交付**：用 `present_files` 交付 **`strategy.inlined.html`**（一份即够，体积虽大但单文件离线可看、可二次编辑、可直接打印）。无需再附原始 strategy.html。

**HTML 内容结构（顺序固定；🚨 第一部分融合成一块，模块简短、不大段文字；章节全部用 `h2.section-title` + 序号）：**
1. **Banner（套 html-report-card）**：brand-tag「金手指·素材经理」+ 右上角 logo chip + `<h1 class="title">{产品名} · 素材策略</h1>` → `<p class="subtitle">` 一句话副标（投放要点 / 关键参数）→ `<div class="meta">` 三段（日期 / 阶段 / 周期，Bootstrap Icon）。
2. **一句话目标**：一句话（推什么/给谁/撬动什么动作）→ 单段 `.callout`（蓝色）高亮。
3. **目标 · 人群 · 产品分析**：三行式简短——推广目标 / 目标人群 / 主打卖点，各一行。用 **`table.data-table` + KV 型两列**（带 `<thead>`），左列字段名（如「推广目标」/「目标人群」/「主打卖点」），右列内容。
4. **创意思路和规划**（🚨 唯一策略板块）：`<section>` 标题如「**01 创意思路和规划**」
   - 一条核心主张（加粗 + 理由，🚨 只此一处）→ 蓝色 `.callout` 单段高亮；
   - 一句话交代总量与视频（如"按你的预算配约 30 张图、这轮先不做视频"）→ 紧接上方同一 callout 或其下单独段；不另起标题；
   - 建议做哪几类素材：每类一张**多列表格**（🚨 头部 thead 必备），列：「创意类型 / 优先级·数量·尺寸 / 怎么给用户传信息」+ 示例图 `<img>`（容器必须 `.img-frame` 包住，`object-fit:contain` 防裁切，inline_assets.js 转 base64）。🚨 **参数标在卡片上，不再单开"做多少素材"板块**。
5. **素材执行手册**（🚨 主体只到表一 / 有视频时到表二）：`<section>` 标题「**02 素材执行手册**」
   - 开头**仅一句话过渡**（如"照着下表逐条做即可"），不复述主张/素材组合、不重复样式图；
   - **表一 · 素材制作总表**：`<table class="data-table">` 5 列逐条 1:1（# · 创意类型 · 尺寸 · 文案 · 生成提示词），有 N 条素材就 N 行。文案与生成提示词逐条写实、不复用凑数；视频行在"文案"列给脚本方向、"生成提示词"列填 `—`（完整视频脚本见表二）。
   - **🆕 仅当本项目有视频需求时**，在表一之后追加**「表三 · 完整视频脚本表」**（按 `references/video_script_method.md`，覆盖策略规划的几条视频，演员只给提示词不生图）。无视频需求时此表**整节不存在**。
6. **投放前动作 · 文案与按钮**：放在**「下一步建议」section 里作为第 2 条的展开**，不复述执行手册主体的内容，只讲清「外层文案 / 转化按钮 / 首条评论」是什么（只讲当前版位有的组件）→ 内嵌对应版位的官方结构示意图（多版位并排多张）→ 给「文案与按钮汇总表」（外层文案 = 广告数、首评 = 广告数 + 转化按钮主选/备选，逐条列出）。不再放进执行手册主体。
7. **🆕 下一步建议**（🚨 固定放在输出物最末尾，`<section>` 标题「**03 下一步建议**」）：开头一句"照下面顺序走就行"，随即 `<ul class="plain-list">` 只含 2 条：① 先生成素材；② 再准备文案和按钮（末尾加"↓"明确指向下面 ①② 子标题）。**清单结束后立刻无缝展开第 2 条的详细内容**，不另起 section、不拖到很远：
   1. **先生成素材**：执行手册"生成提示词"已逐条写好，直接拿去出图。**图片质量优先 GPT Image 2，其次 Nano Banana Pro；想快用混元**（WorkBuddy 可直接调用）；视频推荐 **Seedance 2.0**。可先出 2-3 张草图看效果。🚨 **正式出图（终图）的文件名必须规范**：`{项目名称}_{素材类型}_{生成时间YYYYMMDDHHmm}_{序号}`（如 `手工香薰蜡烛_榜单素材_202608221530_01.png`），详见 `references/prompt_method.md`「出图文件命名规范」。
   2. **再准备文案和按钮**：紧接用带序号的小标题①②讲透：
      - **① 先搞懂这几个位置分别是什么**：结合实际版位，大白话讲清外层文案/转化按钮/首条评论各是什么（只讲当前版位有的组件）→ 再内嵌**对应版位的官方结构示意图**（第 2.5 步脚本落地、本地兜底，自带免责备注）。
      - **② 这几类文案的现成稿子（可直接用）**：即「文案与按钮汇总表」——外层文案 = 广告数、首评 = 广告数（朋友圈才有）+ 转化按钮主选/备选，逐条列出。收尾一句：素材和文案都备齐后就进入投放，想快速投放找 → **金手指**。
   > 🚨 **合规自检不写进"下一步建议"**：合规自检是文案生成/定稿过程中默认就做的动作（拟好文案→对照本地审核规范 `review_compliance_deep.md` 自检→按红线改→定稿），不是给用户的下一步建议。文末只需在文案汇总后一句话说明"这些文案已按合规方向写好"即可。

> 🚨 全程遵守三条硬红线：① 不出现内部黑话（平台样式类/原生类/海报类/业务元素类），一律用"怎么给用户传信息"大白话；② 创意类型只用官方 13 类原名，不自创；③ 渲染时去除 SKILL.md 里的 emoji 🚨 / ❌ / ✅，改用 html-report-card 的语义颜色与标题词。
> 排版要求：所有 section 用 `h2.section-title` + 序号（连续 01/02/03）；模块简短、表格清晰；遵循 html-report-card 的浅色主体配色（金融类涨红跌绿 = `.pill-ok` 绿 / `.pill-warn` 橙 / `.pill-danger` 红，对应 ok/warn/danger 三个 token，不破坏通用色板）。

## 文案 & 提示词方法（独立板块，见 references）

- 文案写作方法 → `references/copywriting_method.md`（通用文案规则 + **13 种图片创意类型各自的文案规范** + 视频四类文案位说明 + 合规红线）
- 生图提示词方法 + 生图链路 → `references/prompt_method.md`（**已启用**；13 种类型画面规范 + 典型提示词模板 + 标准样式参考图 + 三级生图链路）
- 提示词优化方法 → `references/prompt-optimizer/prompt-optimizer.md`（内置参考资料，非独立 skill；SOCAWT 六维框架 + 双模式 + 提示词模板与避坑指南；生图提示词第 1 段打磨强制读取它）
- 🆕 视频脚本方法 → `references/video_script_method.md`（**仅当有视频需求时启用**；固定演员 → 演员真人形象提示词 → 分段视频提示词；产出「表二 · 完整视频脚本表」并入执行手册。演员只给提示词、不实际生图）

> 这三份是**可独立编辑**的方法板块。要调整文案写法、生图提示词或视频脚本写法，只改对应 references 文件，无需动主流程。

## 内置参考

- `references/brief_spec.md`：素材策略完整结构规范（三块字段、决策链、公式驱动数量规则、视频规划、PDF 交付说明、校验规则、香薰蜡烛案例）。产出前应读取它对齐结构。
- `references/copywriting_method.md`：文案写作方法（13 种图片类型文案规范 + 视频类文案位）。
- `references/prompt_method.md`：生图提示词方法（**已启用**；13 类画面规范 + 典型提示词模板 + 标准样式参考图）。
- `references/prompt-optimizer/`：提示词优化内置参考资料（`prompt-optimizer.md` 主文档 + `references/soca-wt.md`、`references/prompt-craft.md` 配套；SOCAWT 六维视觉分析框架 + 提示词模板与避坑指南）。生图提示词第 1 段打磨直接读取，**不是可独立加载的 skill**。
- `references/video_script_method.md`：🆕 视频脚本方法（**仅当有视频需求时启用**；固定演员 + 真人形象提示词 + 分段视频提示词 → 产出「表二 · 完整视频脚本表」并入执行手册；演员只给提示词不生图；含视频输出分辨率建议 720p/1080p）。
- `scripts/query_placement.js`：从本地投放指引知识库抽版位/尺寸/创意形式（**已改为本地读取，不再调妙问、无需任何 API Key**）。
- `references/tencent-ads-delivery-guide/`：内置的《腾讯广告投放全链路操作指引》本地知识库（15 份官方口径整理文档，含创意灵感/审核合规/落地页/推广产品/归因/品牌组件/开户资金/广告预览八大主题）。版位尺寸看 `references/creative_inspiration_deep.md`；合规红线看 `references/review_compliance_deep.md`；按钮/落地页看 `references/landing_page_deep.md`。**替代原妙问在线查询，保障缺 Key 也能出策略。**
- `scripts/inline_assets.js`：🚨 **打印 PDF 前必跑**——把 HTML 里所有本地图片（case_samples 样式图等）转成 base64 内联，webp 自动转 png，保证换任何模型/机器/PDF 引擎都不丢图。输出目录缺图时自动回退 skill 内置副本。
- `scripts/fetch_case_samples.js`：🆕 **第 2.5 步必跑**——从平台案例库（生产 `creative_examples`）拉取 13 类标准样式示例图落地到输出目录；平台优先、本地自动兜底；HTML 引用文件名以其 `[RESULT]` 为准。
- `assets/case_samples/*.webp`：13 类官方标准样式示例图的**本地兜底副本**（主来源已外置平台案例库，由 `fetch_case_samples.js` 运行时拉取；平台不可用时自动回退用这批）。
- `scripts/detect_image_channels.js`：探测本机可用的兜底生图渠道（L2）。
- `assets/placement_structures/*.webp`：5 张官方**版位结构示意图**（朋友圈/视频号/公众号/平台与内容信息流/开屏）的**本地兜底副本**（主来源已外置平台案例库，由 `fetch_case_samples.js` 运行时拉取）。已标好①外层文案②创意图/视频③转化按钮④首条评论的位置、自带免责备注。讲「外层文案/转化按钮/首条评论」概念时**直接内嵌对应版位那张，不再手绘 SVG**。

## 完整示例

用户说："我想推广我做的手工香薰蜡烛，主打助眠，主要卖给上班的年轻女性，想让大家下单买，总预算 5000，打算投 30 天。"

1. 提取到：产品=手工香薰蜡烛、卖点=助眠、人群=年轻女性、目标=卖货、总预算=5000、投放天数=30。行业可推断为家居/香氛。🚨 **CPA 未给 → 必须追问**（"一次下单大概能接受多少成本？不清楚我按香氛行业经验给你个估值"）；假设用户答 CPA≈50。
2. 调 `query_placement.js` → 本地指引返回：优先朋友圈（人群精准+微信生态+品质转化）、主跑 800×800（1:1）多图 / 卡片横版视频 16:9 1280×720、强广告属性开头+吸睛首帧的温柔治愈调性。
3. **公式算数量**：日预算=5000÷30≈167；广告数=167÷(50×20)=167÷1000≈0.17 → 不足 1，按至少 1 条；素材=1×3~1×5=3~5 张 → **不足 30，按首投兜底 30 张**；外层文案=广告数、首条评论=广告数。**无渠道要求且预算<1万 → 不做视频。** 产出三块策略：A 重点呈现"睡前仪式感"；B 朋友圈图片（常规海报/数字人海报等）；C 素材 30 张、不做视频。
4. 组织成策略解读 + 执行手册（30 条素材逐行、文案按公式配齐、生图提示词按类型模板逐条写实、每类内嵌标准样式示例图）→ 生成 PDF → present_files 交付。
5. 若预算改为 2 万、天数 30、CPA 100：日预算≈667、广告数=667÷2000≈0.33→按兜底 30 张；**预算≥1万且无渠道要求 → 视频≈素材数×20%**，在策略里规划视频（如单人口播×?、混剪×?），并按 `video_script_method.md` 产出「表二 · 完整视频脚本表」。若用户**点名投视频号或指定素材类型**：读内置指引 `references/tencent-ads-delivery-guide/` 获取该渠道创意形式与视频建议后再定。

---

---

