全链路投放工作流第②环节【媒介经理】。从对话上下文读需求立项单完整文字 + 读投放可行性评估HTML,**v1.27.0 起全流程唯一一次灌入(需求单字段+策略字段合并灌 48 字段)**,**v1.26.0 起主路径直接拼 strategy 全量结构化字段调 open_config 灌入金手指配置页(48 字段),不再产出本地确认单 HTML**——HTML 仅在金手指 MCP 不可用/degraded 时兜底存档。针对性标注可行性评估的⚠️/❌项。触发词:媒介策略、投放策略、账户搭建、基建纪要、诊断纪要、全链路第二步。
Scanned 9/12/2026
Install to Claude Code
npx -y skills add ahang1598/doubao-workbuddy-qwenwork-skills --skill flow-media-manager --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Flow Media Manager?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ahang1598-flow-media-manager)More formats (shields.io, HTML) on the badges page.
---
name: flow-media-manager
display_name: 媒介策略·串联版
display_name_en: Flow Media Manager
description: 全链路投放工作流第②环节【媒介经理】。从对话上下文读需求立项单完整文字 + 读投放可行性评估HTML,**v1.27.0 起全流程唯一一次灌入(需求单字段+策略字段合并灌 48 字段)**,**v1.26.0 起主路径直接拼 strategy 全量结构化字段调 open_config 灌入金手指配置页(48 字段),不再产出本地确认单 HTML**——HTML 仅在金手指 MCP 不可用/degraded 时兜底存档。针对性标注可行性评估的⚠️/❌项。触发词:媒介策略、投放策略、账户搭建、基建纪要、诊断纪要、全链路第二步。
description_zh: 全链路第②环节【媒介经理】,从对话上下文取立项单字段+读可行性评估HTML,v1.27.0 起需求单与策略字段合并为唯一一次灌入,v1.26.0 起直接拼结构化字段灌入金手指(无 HTML 冗余产物,MCP 失败才兜底写 HTML),针对性标注风险项。
description_en: Stage 2 (Media Manager) of the full-funnel workflow. Reads the demand charter + feasibility assessment, assembles full structured strategy fields and injects them into the Goldfinger config page via open_config (local HTML memo only as fallback when MCP is unavailable).
category: marketing-growth
version: 1.29.0
agent_created: true
---
> 📌 当前版本 **v1.27.0**|历史变更(40 条版本注记)已外置到同目录 `CHANGELOG.md`,**本文件只写生效规则**。改动时请同步 CHANGELOG.md。
# 媒介策略·串联版(flow-media-manager)
全链路投放工作流的**第②环节【媒介经理】**。上游是 ad-demand-helper-pro 的《需求立项单》(对话栏文字)+《投放可行性评估清单》(HTML 文件),下游是 ai投手(flow-ai-shooter) 与 素材助手(flow-material)。
## 输入(读上游)
读 ad-demand-helper-pro 的 2 份产出:
### 输入 1:需求立项单(**从对话上下文读立项单完整文字,v1.27.0 起**)
> ⭐ **v1.27.0 数据源回切**:ad-demand-helper-pro v2.32.0 起**不再灌入金手指**(需求单阶段零 MCP 调用),因此**没有 session 可拉**——立项单**完整文字重新成为唯一权威源**,从对话上下文逐字段读取。
>
> ⚠️ **不要**再 `GET /api/mcp/session/{sid}` 取 `demand.groups`(v1.25.5~v1.26.x 的做法作废,那个 session 不存在了);也不要 Read 立项单文件(不存在,它只是对话栏文字)。
>
> ⭐ **这些字段值有两个用途**:① 做策略;② **灌入时拼成 `demand.groups` 一并传给金手指**——v1.27.0 起**灌入合并为一次**,`demand` 需求单字段与 Part 2/3/4 策略字段在同一次 `open_config` 里全量灌入(原"提需先灌一次、策略再灌一次"作废)。所以取值时必须完整记住每个字段。
按立项单分区逐字段取值(对话栏文字里的字段名 → 内部字段语义):
- **基础信息**:`offerId`(产品名称)/ `demand_offer_intro`(产品简介)/ `requestTitle`(标题行)
- **预算与测试目标**:`demand_test_goal`(测试目标)/ `demand_kpi`(考核指标,大白话)/ `demand_budget_limit`(总预算)/ `demand_budget_cycle`(投放周期)/ `demand_launch_date`(上线时间)
- **人群策略**:`demand_audience_logic`(客户类型/人群逻辑)/ `demand_core_ta`(核心人群)
- **素材与承接**:`demand_has_material`(现有素材)/ `demand_carrier`(转化载体,v2.22.0 起 og 载体槽位)/ `demand_product_channel`(商品渠道,v2.22.0 条件题)/ `demand_dev_resource`(开发资源)
- **其他**:`demand_compliance`(合规要求)/ `demand_history`(历史投放经验)/ `demand_selling_points`(核心卖点)
> ⚠️ 立项单里**没出现的字段就是没问到**(如预算来源、结束时间、落地页链接、渠道版位、人群数量):按缺失处理,不阻塞,该由策略环节测算填充的就自己算。
> ⚠️ KPI 是大白话(如"品牌声量优先;单客获客成本不超过 100 元"):AI 解析出策略方向(声量优先 → CPM/广覆盖)+ 成本上限(100 元 → oCPM 出价区间)。
### 输入 2:投放可行性评估清单 HTML 文件(3 段)
- **段 A 广告主类型**:推导画像(如"中小广告主·新手·To C·虚拟商品服务")→ 影响策略激进程度
- **段 B 可行性评估**:6 维度(预算充分性/素材准备/合规风险/落地页承接/测试周期/KPI可达性)的 ✅/⚠️/❌ 状态
- **段 C 优化建议**:用户需要补什么
> ⭐ **策略针对性**(v1.2 起):
> - ⚠️ 项 → **段 A 字段**里标注风险与建议(段C 已废,标注全部由段A 负责)
> - ❌ 项 → **段 A 字段**里标注"必须补齐才能投放"+ 具体补齐指引(**融入字段值,不要单独开 alert 块**)
> - 如"素材都没准备 ❌" → 段 B 标注"需先补产品图/视频素材",具体指引融在段 B 的"成品规格"或"品牌资产透传"字段里
### 路径判定(参考可行性评估"历史经验")
- 从没投过 / 无在投账户 → 走「基建路径」,参考 `ai-analysis-expert-newproject` 五维基建
- 投过没达预期 / 不错想扩量 / 正在投想优化 → 走「诊断路径」,参考 `ai-analysis-expert-diagnose`
### 投放方式判定(试跑发现的关键约束)⭐
- **用户指定了版位**(如"只投朋友圈+视频号""排除公众号"等强约束)→ 走**标准投放**(`tencentads-delivery-standard-create`),可手动指定版位
- **用户未指定版位 / 接受智能择优** → 走**智投 AIM+**(`tencentads-delivery-smart-create`),版位系统智能择优
> ⚠️ 原因:智投(AIM+)版位是系统智能择优,**不可手动指定"只投某版位/排除某版位"**。若立项单有版位强约束却走智投,建单后版位不可控。
> 此判定结果写入段A「投放方式」字段,ai投手据此选调哪个建单 skill。
**转化归因前置条件(试跑发现的关键约束)⭐**:
> 建单时 conversion_id 必须带链路信息,否则报 1801106。账户需先在腾讯广告后台配置转化归因链路。
> 若用户账户未配置,媒介经理应在段A末尾提醒,并给出以下指引(来源:WebSearch 联网查腾讯广告官方文档):
> 1. 开通权限:联系行业运营,提供 UID/MDMID 申请开通「营销链路」权限
> 2. 新建转化:投放管理平台 →【资产】→【数据营销】→【转化归因】→ 新建转化
> - 小程序:填 AppID(gh_开头) → 选优化目标 → 选营销链路 → 勾选上报节点
> - H5网页:填落地页URL → 获取JS密钥嵌入 → 选优化目标 → 选营销链路 → 勾选上报节点
> 3. 联调激活:进入「转化联调」→ 上报行为数据 → 激活
> 4. 建广告时选新的带链路的 conversion_id
**品牌形象组件前置条件(试跑发现的关键约束)⭐**:
> 建创意时 brand 组件是模板必填项(缺则报"模板必填组件缺失: brand"),需在腾讯广告后台预先配置**新版品牌形象**(旧版报1800355"must use new version brand",全场景强制新版)。
> 若用户账户未配置,媒介经理应在段A末尾提醒,并给出以下指引:
> 1. 入口:投放管理平台 →【资产】→【创意资产管理】→【品牌形象】
> 2. 新建**新版**品牌形象:
> - 上传品牌 logo 图(**512×512像素**,新版统一标准)
> - 填写 brand_name(**2~12个字**,如"某某优选")
> - 保存后在创意中用 component_id 引用(数字类型,如 `{"component_id": 1940737385209}`)
> 3. ⚠️ 旧版品牌形象(200×200/80×80/300×300等规格)已不可用,全场景报1800355,必须新建新版
> 4. 查账户已有品牌组件:`get-components.mjs '{"account_id":"<ID>","component_type":"BRAND"}'`,返回含 component_id + brand_type(common/wechat_channels等)
**落地页前置条件(试跑发现的关键约束)⭐**:
> 建创意时 main_jump_info 落地页组件是模板必填项,需账户侧预先在【资产→创意资产管理→落地页】中配置好落地页(不限于小程序,H5/小程序/应用宝等各类落地页均在此配置):
> - 入口:投放管理平台 →【资产】→【创意资产管理】→【落地页】→ 新建落地页
> - 按落地页类型配置(小程序/H5等),配置并审核通过后建创意时引用
> - 若未配置:建创意时报 1800007 "Invalid ID of wechat mini program"(小程序)或落地页字段为空等错误
> 若账户未配置,媒介经理应在段A末尾提醒用户先到【资产→创意资产管理→落地页】配置落地页。
## 产出:《投放策略纪要-[项目名].html》(三段结构)⭐
> **重要**(v1.28.0 修订):fallback 模式的《投放执行确认单》HTML **与《投放可行性评估》共用 `html-report-card` 卡片规范**——骨架 `html-report-card/assets/template-jinshouzhi.html`、样式 `assets/theme.css` 全文内联、遵守 `references/design-rules.md` 16 条硬规则、交付前跑 `scripts/check_html.py` 需 0 error。`references/html-memo-template.md` 只提供**内容结构**(段A/段B 字段、占位符来源、一致性自检),不再内嵌独立 HTML 模板。
> ⭐ **v1.2.1 UI 统一**:策略纪要与《投放可行性评估清单》**共用同一套设计系统**,两份 HTML 产出视觉上必须是同一套文档(v1.3 起立项单是对话栏文字,不参与 UI 统一):
> - 字体:系统字体栈(`-apple-system / PingFang SC / Microsoft YaHei`),**不引 Google Fonts、不用衬线展示字体**
> - 底色 `#f7f7f5` 纸感灰 + 单张白卡 `.container`(max-width 900px / radius 12px / 轻投影)
> - 主色 `#378ADD`;状态色 ok `#27ae60` / warn `#e67e22` / bad `#c0392b`
> - 章节用细线 `#f0f0ed` 分隔 + 3px 主色竖条标题;页脚/底纹 `#fafaf7`
> - 段落区分只靠竖条与 seg-tag 底色轻量区分:段A 蓝 / 段B 绿 `#27ae60`(v1.18.0 起段 C 已废,CSS 类保留无害)
> - ⭐ **topbar 左侧必带金手指 logo**(v1.14.0 起):图标 base64(读 `references/gf-logo-base64.txt` 替换 `{{GF_LOGO_BASE64}}`)+ "金手指 / AI · Ad Agent" + 竖线分隔,与可行性评估同款;不自己画 SVG、不引本地路径、不用 emoji
> - ❌ 禁止:玻璃拟态 / backdrop-filter、渐变文字、多层 radial-gradient 背景、大号衬线标题、深色终端代码块、入场动画
> - 写文件前跑一遍模板末尾的「一致性自检」清单
### 段 A:投放策略段(给 ai投手 建单用)⭐v1.20.0 补五维基建分档推导
五维基建给**具体数字区间**(默认基线,用户有经验则覆盖)。**v1.20.0 起:区间必须按预算分档推导给出**(不再给"裸区间"):
- **投放方式**:按上方「投放方式判定」结论填写。**格式固定**(v1.20.0):`智投 AIM+(tencentads-delivery-smart-create)` 或 `标准投放(tencentads-delivery-standard-create)`——skill 名括号附在后面,让 ai投手直接复制选用建单 skill。**v1.23.0 起**:是否智投不设独立字段,由本字段派生(`isSmartDelivery` = 智投 true / 标准 false,灌 open_config 时派生后照传)
- **优化目标 og(v1.24.0 判定逻辑重写,建单必填)**:双字段——`optimizationGoal`(og 英文枚举)+ `optimizationGoalName`(og 中文名)。**判定对照 `references/og-library.md`(层1 语义路由层:33 个浅层 og,不含深转、不含行业特化)**:官方四元组联动(营销目的→推广产品→营销载体→优化目标)+ 归因硬门槛(不接归因=不能用转化 og)——**营销目的输入 = C2 投放目标(v1.24.7 起 C1 已删,品牌宣传由 C3"品牌声量优先"单信号路由)**;小店=平台自动归因(**优先推荐**,前提=告知用户自行搭建官方小店落地页);落地页=JS;App=SDK/API;无归因=**点击 og + CPC 出价(兜底)**。**出价联动二分**(v1.24.2):选转化 og → bidding 只能 oCPX(与 `bidding` 交叉校验,矛盾即报);选点击 og 兜底 → bidding 必须 CPC(按点击计费,不优化转化)。行业特化 og(金融开户/入金、教育低价课、短剧看剧等)不进库,涉及时调知识库查
- **账户**:账户数(**按日预算 4 档分档推导**,v1.20.0)+ 账户类型三选一(白户首选/老户重启/灰户避开):
> <1000 元/日 → 1 个 | 1000-5000 → 1-2 个 | 5000-20000 → 2-3 个 | >20000 → 3-5 个
- 字段值附一行小字推导:"日预算 X 元 → 推 N 个账户"。**不再一律"默认 1 白户"**(高预算项目会被低估账户数,过审风险高、量级天花板低)
- **版位**:主投版位(依提需渠道偏好)、排除版位
- **广告结构**:**按日预算 3 档分档**(v1.20.0):
> <2000 元/日 → 3×3×5 | 2000-10000 → 3-5×3-5×5-10 | >10000 → 5×5×10
- 字段值给分档结果(如"日预算 3000 → 4 广告 × 4 创意组 × 8 素材"),不给通用裸区间
- **出价**:出价方式(oCPM等)、出价金额区间、考核指标(AMS枚举,透传自需求单)。**考核指标分两个独立字段**(v1.24.1):`kpi`(考核目标,单指标、只用成本口径,如 `成本≤90元` CPA 上限,透传需求单成本预期)+ `kpiRedline`(考核红线,**与 kpi 平级、独立指标**而非成对关系,按指标类型推导——**成本类**:常规 × 1.2-1.3 上浮;**ROI/量/率类**:常规 × 0.7 下浮;**触发动作暂不建设**,字段值先录入)。**v1.20.0 出价公式(核心推导依据)**:
> **初始出价 = 考核成本 × 50%-70%**
- 字段值附一行小字推导:"考核成本 X 元 × 0.5-0.7 = 初始出价 Y-Z 元"——金额区间是**结果**,公式是**依据**(可施工内容,不属"待办型警告",保留)
- 调价节奏附在字段值里:单次调价 ≤10%、观察 4 小时再动、冷启动期别频繁调、累计 5-10 个转化后可回调
- **预算**:日预算/总预算/上线日期(透传)
- **定向/时段**:
- **定向方式默认值**(v1.20.0):`系统智能定向(首选),有老客种子叠加 lookalike`——oCPM 宽松定向利于探索,有种子再叠
- **投放时段基线**(v1.20.0,用户经验可覆盖):00-07 低/暂停 | 09-11 放量 | 14-17 观察 | 20-23 高峰
- 🚨 **日内时段渲染硬规则**(v1.25.6,实测 bug 修复):时段基线在字段值里**就是一行文字**(`00-07 低/暂停 | 09-11 放量 | 14-17 观察 | 20-23 高峰` 这种竖线分隔格式)——**禁止**做成"每小时一行"的表格(实测 bug:agent 自由发挥把时段拆成 0-0 / 1-0 / 2-0- 每小时一行,且把字符串当 iterable 逐字符遍历出乱码);**禁止**对时段字符串做逐字符 enumerate——它是 4 个"区间+短语"块,不是字符序列
- `deliveryHours` 传金手指时 key 是**时段区间**(如 `"00-07"`、`"09-11"`),值是**单个短语**(如 `"低/暂停"`、`"放量"`)——共 4 块左右,不按小时拆 key
- **素材池衔接**(v1.20.0 新增字段):`素材池储备`——按段B 预算驱动测算结果填(如"20 张图片(总预算 6000 → 20 张档)"),让 ai投手建单时一目了然池子里有什么,避免段A/段B 信息断裂
- **上新节奏**(v1.20.0 新增字段):`每 3-5 天补 1-2 条素材进池`——写"上新节奏"字段,让 ai投手/用户知道上线后怎么保持池子活性
- **盯盘节奏**:每天 9:00/12:00/14:00/16:00/18:00 五时点。**v1.20.0 加"盯什么"一行**:盯指标 = 出量广告占比 / 各广告消耗分布 / 素材跑速 / 红线预警 / 冷启动进度
- 🚨 **🚨 段A 末尾禁令(v1.18.0 起生效)**:**不输出**任何"针对可行性评估风险的处理"alert / 账户未配置项的"前置条件配置指引"块 / "合规文案自检" / "上线前必做审核预检"等**待办型警告**——这些内容**不属于执行单的职责边界**,应交给用户在投放时按段A「盯盘节奏」+金手指"项目管理→腾讯广告 Key 托管"自行检查。**执行单只交付"策略 + 可施工内容"**,不要越界变成"上线前待办清单"。可行性评估里的 ⚠️/❌ 项**已经在段A 字段里针对性标注完毕**(v1.2 起的规则,v1.18.0 后段C 删了、标注全部由段A 负责),不必再开新 alert 重复。
- ⚠️ **v1.20.0 边界澄清**:分档推导小字(账户/结构/出价公式)**属于"策略可施工内容"**,与"待办型警告"不同——推导说明**保留**,待办警告**禁止**。两者别混
### 段 B:素材策略段(给 素材助手 用)⭐v1.17.0 按素材策略规范重写
> 规范来源:金手指「素材策略专家」规范(material-strategy-assistant v3.2 brief_spec)的**策略层**——选什么类型、做多少、要不要视频、怎么传信息。逐条文案/生图提示词等执行层由下游素材模块做,不在本段。
**① 核心主张(段B的灵魂,放最前)**
- 结合 `一句话卖点 × 目标人群 × 投放目标` 提炼**一条**加粗核心主张 + 一两句判断理由(为什么呈现这条最能促转化)。**单一聚焦,只此一条**。
- 例:**睡前点一支,让房间和情绪都慢下来**——该人群痛点是睡前焦虑、购买由情绪价值驱动,呈现"助眠仪式感"比堆成分参数更能促下单。
**② 创意类型推荐(图片选 2-3 类 + 视频规划)**
- **图片只能在官方 13 种类型里选**(🚨 严禁自创/改名/野生命名,如"场景海报""好友分享图"一律不用):
> 常规海报 · 模拟朋友圈 · 小红书笔记 · 仿对话 · 数字人海报 · 公众号资讯 · 榜单素材 · 户外海报 · 备忘录 · 大字报 · 九图拼接 · 四图拼接 · IP海报
- **视频 4 种**(仅满足视频门槛时规划):情景剧 / 单人口播 / 动图(图片动态化)/ 混剪(旁白+画面剪辑)
- 选型逻辑(🚨 **仅内部判断用,绝不写进产出**):海报类=品牌方正面传递;原生类=仿素人分享弱化广告感;平台样式类=仿平台原生界面;业务元素类=直接亮利益物。**强合规行业(金融/医疗等)原生类风险高(易触"受益人口吻"红线),优先海报类+平台样式类**
- 每个推荐类型给一行:**官方类型名 + 方向/数量 + 一句「怎么给用户传信息」的大白话**(如"像朋友晒店,熟人口吻+评论互动"——🚨 产出里不出现"平台样式类/原生类"等内部黑话,一律翻译成大白话)
- 视频行标注叙事套路(痛点式=痛点共鸣→解决方案→行动引导 / 话题式=热门话题→相关性→引导 / 冲突式=抛误解→解释→共识→引导),按选题各挑一条,不全套同一条
**③ 数量测算(🚨 预算驱动,唯一权威;v1.20.0 档位改互斥)**
> 预算取自上游 `demand_budget_limit`(总预算),账户数取自段A。
| 预算档位(互斥,v1.20.0) | 图片数量 | 视频 |
|---|---|---|
| **<1000 元** | 约 10 张 | ❌ |
| **1000-5000 元** | 约 15-20 张 | ❌ 默认不做 |
| **5000-10000 元** | 10~50 张随预算递增 | ❌ 默认不做 |
| **>10000 元** | 按账户数测算,**单账户约 50 张封顶**,多账户线性叠加 | ✅ 可做 |
| 任意预算但**点名视频/投视频号** | 按上表 | ✅ 做 |
> 🐛 v1.20.0 修复:旧表 `≤500 / ~5000 / 500-1万 / >1万` 档位边界重叠(如总预算 6000 元同时命中"约 5000"和"500-1万"两档,无法判定),改为上表**互斥档**。
**三条硬约束**:① 素材量**最低 10 条**(首投场景由 v1.22.0 公式的"储备 ≥30"取代);② **单账户图片约 50 张封顶**(行业基建基准 3–5 广告 × 3–5 创意组 × 5–10 素材 ≈ 50/账户);③ **视频门槛 = >1 万元 或 明确要视频/投视频号**,否则纯图片。
**④ 基建驱动测算公式(v1.22.0 新增,精确数字以此为准)**
> 输入:**日预算**(段A)+ **CPA**(考核成本,需求单 KPI 解析)。公式把「预算 → 基建(广告数)→ 素材/文案数量」串成一条线。
| 输出项 | 公式 | 说明 |
|---|---|---|
| 广告数 | `日预算 ÷(CPA × 20)` | 每条广告日消耗达 CPA×20 才能积累足量转化跑出模型;算出日预算能支撑的并行广告条数。结果取整,不足 1 条按 1 条 |
| 素材数 | `广告数 × 3-5` | 每条广告配 3-5 素材,与段A 广告结构分档一致 |
| 外层文案数 | `= 广告数` | 每条广告 1 条外层文案(外层文案与按钮汇总表 ⑦ 按此动态算) |
| 首条评论数 | `= 广告数` | 每条广告 1 条首条评论(朋友圈版位) |
**硬约束:首次投放(基建路径)素材储备不低于 30**——在投素材(广告数×3-5)是当期消耗量,素材池储备(首投 ≥30)是轮换余量,两者别混;`materialPool.total` 按储备口径填。
**示例**:日预算 1500 元、CPA 90 元 → 广告数 = 1500÷(90×20) ≈ 0.83 → 1 条;素材 = 3-5 张/广告;外层文案 1 条、首条评论 1 条;首投素材池储备 ≥30。
- 满足视频门槛时明确规划:**哪几类视频、各几条、为什么**(视频物料生成为下游职责,本段只到策略层,不遗漏即可)
- 融合表列序固定:**创意类型 · 优先级 · 尺寸 · 数量 · 怎么给用户传信息**(最后列填大白话,不填分类名/术语句)
**④ 尺寸规范(🚨 按创意类型定横/竖/方,不再一刀切)**
- **竖** 9:16 1080×1920:榜单素材、大字报、情景剧/口播/混剪
- **横** 16:9 1920×1080:常规海报、公众号资讯、数字人海报、动图
- 未列出类型按画面特性判断(信息密/竖屏沉浸走竖;横向图文卡片走横;不确定**方图 1:1 800×800 兜底**)
- 整批素材横/竖/方比例**尽量落在约 4:4:2**
- **成品规格要求**(保留):素材模块须把成品**裁到对应类型尺寸并 JPEG 压到 <1MB**(生图+裁剪压缩由素材模块负责,投手直接上传)
**⑤ 一句话卖点**:透传自需求单 Part2(与①配合——卖点是原料,核心主张是提炼)
**⑥ 品牌资产透传(缺口C修复,保留)**:本段**固定带一栏「品牌资产透传」**,**引用**(不复制)提需确认单 Part2 的品牌资产:
```
【品牌资产透传·引用自《投放需求信息确认单》Part2】
- logo:[有/无/待确认](来源:确认单Part2,素材助手请以确认单文件为准取原图)
- 主色/品牌色:[色值 或 待确认]
- slogan:[原文 或 待确认]
- 风险提示语:[原文 或 待确认]
```
- 缺失项用 `pill miss` 标记(**仅状态显示,不附"建议联系设计/品牌方"等待办型话术**),不编造。logo/风险语只**透传**不参与生成,留待后置组装环节精确叠加。
- v1.19.0 起:模板里那段"→ 素材助手需直接读取...本栏仅作透传指引"也删了——透传栏只展示字段状态,不输出"该怎么做"的指导性话术
**⑦ 外层文案与按钮汇总(v1.25.6 起含 CTA 规则;v1.25.7 恢复素材策略专家原始规范)**
- **外层文案**(`outerCopy` string[]):条数 = 广告数;每条一句话、与素材方向呼应
- **首条评论**(`firstComments` string[]):条数 = 广告数(朋友圈版位);熟人口吻、不直接提产品名
- **转化按钮**(`ctaCopy` {primary, backup})——**原始规范**(来源:素材策略专家 copywriting_method.md「转化按钮」章节,v1.25.7 恢复,替换 v1.25.6 臆造的 og 映射表):
- **固定选项,不可自定义**:从平台可用列表里选——朋友圈共 **17 个**:`了解更多 / 去逛逛 / 查看详情 / 立即体验 / 立即咨询 / 立即购买 / 立即抢购 / 立即领取` 等。**不要发明列表外的按钮文案**(v1.25.6 臆造过"立即预约/免费咨询/立即注册"等,均不在平台列表)
- **按产品调性选**:
- 氛围型/无压迫产品(香氛/家居/生活方式/内容订阅)→ 优先 **"去逛逛"**
- 强购买意向(实物电商/虚拟商品直售)→ **"立即购买"**
- 限时活动/优惠驱动 → **"立即抢购"**
- 工具试用/体验驱动 → **"立即体验"**
- 服务咨询/留资类 → **"立即咨询"**
- 权益/券类发放 → **"立即领取"**
- 兜底(无明显调性倾向)→ **"了解更多"**
- ⚠️ **硬约束:选什么按钮,落地页就必须能完成对应动作,否则审核驳回**——按钮文案暗示的行为要与落地页能力一致(这一条同时隐含了与 og 的一致性:og=COMPLETE_ORDER 配"立即购买"✅、配"去逛逛"❌)
## 进度条(v3.14 起,每条回复开头必带;v1.25.0 起改三步制)
本 skill 执行期间处于 3/3 阶段,每条回复消息最开头先放一行进度条再接正文(v1.25.0 起全链路 4 步变 3 步:提需含灌入 → 可行性评估 → 确认单含灌入+上线):
```
📍 3/3 执行确认单+开启投放|✅ 需求收集 ✅ 需求评估 ▶ 执行确认单(产出即灌入)
```
## 一气呵成产出(v1.26.0 起主路径无 HTML,不做分段确认)
段 A(投放策略)+ 段 B(素材策略)**一次性全部完成**,不做段间确认(v1.18.0 起段C 已删除)——
- 不再设"交接点2a 媒介策略确认"和"交接点2b 素材策略确认"两个中间确认环节
- **🚨 v1.26.0 起主路径不写 HTML 文件**:两段内容直接落成 `strategy` 全量结构化字段(48 个),灌入金手指配置页——**页面本身就是"确认单"**,用户在页面上核对/修改(实测背景:产出本地 HTML + 拉起页面 = 同一份内容出现两次,冗余)
- 主交互全程在配置页,本地无任何冗余产物
- **fallback 触发条件收紧(v1.29.0)**:只有两种情况才写本地 HTML —— ① **用户明确选择「先不连金手指」**(且已被告知"策略只能落本地文件、不能直接开投");② **已连上但调用失败 / `degraded:true`**。⛔ **连接未就绪 ≠ fallback**:那种情况按 agents《第 0 步 连接就绪检查》先引导连接,**不得直接产出 HTML**。触发后写《投放执行确认单-[项目名].html》存档并按既定轨道打开,话术"确认后我再灌入金手指"。**HTML 走 `html-report-card` 卡片规范**(与可行性评估同一套模板,v1.28.0 起统一);内容结构见 `references/html-memo-template.md`
## 灌入金手指(策略产出后立即执行;v1.26.0 起主路径)
1. **拼装 `strategy` 全量结构化字段**(48 个:`demand.groups` 5 分区 + Part 2/3/4 顶层字段)——数据源:**对话上下文里的立项单完整文字**(拼 `demand.groups`)+ 本环节段A/段B 策略结论(拼 Part 2/3/4)。⚠️ **这是全流程唯一一次灌入**,需求单字段必须一并灌进去,不能只灌策略字段。字段清单与填值规则见下方《灌入金手指:open_config 全量字段》章节
2. **立即调金手指 `open_config` 全量灌入**(不等用户对话确认——用户确认移到页面上)
3. **session 双重校验**:① curl 字段清单校验(抓漏传字段)→ ② sleep 2 后 curl 存活复查(防服务端重启清 session)——**两步都通过才拉起页面**
4. **`present_files` 传 session 短链拉起配置页**(唯一打开方式)+ **同条回复里前置兜底 markdown 超链接**("右栏要是空白的,点这里进配置页")
5. **fallback**:金手指 MCP 不可用或 `degraded:true` → 写《投放执行确认单-[项目名].html》(路径 `投放产出/[YYYY-MM-DD]/投放执行确认单-[项目名].html`,工作区相对路径):**骨架/样式走 `html-report-card`**(`assets/template-jinshouzhi.html` + `assets/theme.css` 全文内联 + `references/design-rules.md` 16 条硬规则 + `scripts/check_html.py` 0 error 闸门,与可行性评估完全同一套),**内容结构**(段A/段B 字段、占位符来源、自检项)见 `references/html-memo-template.md`;按既定轨道打开,话术改回"确认后我再灌入金手指",不阻塞产出
## 交接摘要(3/3 灌入金手指并拉起页面 · 对外话术,v3.16 重排格式;v1.26.0 起主路径不产本地确认单)
**受众分层(核心认知)**:投放执行确认单是**给投放系统/机器读的**,不是给用户读的。里面会有 oCPM 出价、版位配置、转化归因这些专业内容——用户看不懂**很正常,也不需要看懂**。对用户只需要说清:**大体打法是什么(一句白话)、他还缺什么、方向对不对**。
**🚨 文本格式硬约束**(v3.17 用户实测反馈"老是大段大段的给,没有重点"):单段 ≤ 80 字、超出用列表、核心加粗前置、emoji 标记、空行分隔。
**🚨 session 双重校验通过 + present_files 拉起配置页后,🚨 必做紧跟这段收尾话(不能只丢产物就走;v1.26.0 话术,兜底链接前置)**:
```
🎯 投放方案做好了——内容已经灌进金手指配置页,在右边栏打开了。
右栏要是空白的,点这里进配置页:[点这里进配置页]({{BASE/pre-launch?session=SID}})
**这份是给投放系统读的**,专业内容您不用细看。
**📌 大体打法**
- [版位选择 + 预算节奏 + 素材打法,每条 ≤ 20 字]
**⚠️ 之前评估的风险已落处理**
- [风险1] → [处理方式]
- [风险2] → [处理方式]
**🔧 你在页面上做**
- 页面**当前停在第一步「需求单确认」**(2026-08-26 前端源码实证:`?session=` 与 `#s=` 两条灌入路径都硬编码 `o(G.PLAN_PREVIEW)`,与 strategy 内容无关;`open_config` 入参只有 `strategy/rawHtml/project_id`,无 stage 参数,调用侧无法控制)——**灌入的策略字段已经在页面里**,点「确认」进第二步「AI投手准备」就能看到「投放策略」「素材策略」两个 tab
- 先核对预填的字,要改的直接在页面上改;大改回来说一声,我改完重新灌一版
- 然后**手动点"下一步"进"投放计划"** → 关联账户 → 生成投手 → 上传素材 → 点「项目上线」
💡 链接 30 分钟内有效,过期了说一声我重新灌。
```
**"大体打法"提炼标准**:
- 从段 A 投放策略提炼,翻译成普通人能懂的列表化短句——版位选择 + 预算节奏 + 素材打法三要素
- ✅ 好例子:`📌 大体打法` + 列表:`走智投自己挑版位` / `日预算 500 起小预算跑一周` / `3 套素材轮着赛马,哪套跑顺加钱`
- ❌ 坏例子:`oCPM 出价 80-120,版位朋友圈+视频号,RTA 策略……`(术语复述不是白话)
- 用户看了能向老板/同事转述"我们要怎么投",才算合格
**❌ 反例**(旧风格,截图里那种大段;数字一律是占位示意,**真实产出禁止照抄任何示例数字**):
> 🎯 投放执行确认单出好了,在浏览器里打开了——怎么出价、怎么搭结构、要准备什么素材,都写成具体的执行方案了。核心几句话:走智投让系统自己挑版位,[N]个新账户小结构开跑([N]条广告×[N]素材),探索期出价给到 [X]元、第[N]天起再按 [X]元线考核;素材做 [N] 条,[风格A]和[风格B]两组赛马,让数据告诉你哪个方向对。之前评估出的两个风险我在确认单里都落了处理:落地页没搭是硬阻塞……
**对比**:反例单段 200+ 字平铺;正例拆 4 段、每段 ≤ 3 行、列表化。
> ⚠️ **话术必须与实际轨道一致**:走 present_files 说"在右边栏打开了",走 Bash open 说"在浏览器里打开了"。**不谎报**已打开。
> 🚨 **保真规则(v1.26.0)**:收尾话术/交接摘要只陈述**实际发生的动作**——session 校验失败了就如实说"重新灌了一版";没打开不说"已打开";没灌入不说"已灌入";**禁止照抄模板里的示例状态**(模板写"在右边栏打开了"≠你真的拉起过)。
> ❌ **禁用标签格式**:"这是什么:xxx""给谁用:xxx"——表单不是人话。
> ❌ **不引导用户看执行细节**:不说"你看看出价对不对、版位选得行不行"——用户只确认方向。
## 📌 灌入后页面落点:stage 现状与执行单位置(2026-08-26 前端源码实证)
**结论先给**:`open_config` **无法指定落在哪一步**——金手指前端 `index-*.js` 里 `?session=` 与 `#s=` 两条灌入路径都硬编码 `o(G.PLAN_PREVIEW)`,与 strategy 内容无关;`open_config` 入参只有 `strategy / rawHtml / project_id`,没有 stage 参数,也没有可用的 URL 参数。**灌入后页面一定停在第一步「需求单确认」。**
**页面五步与数据消费**:
| stage | 页面 | 消费的数据 |
|---|---|---|
| `PLAN_PREVIEW=1` | 需求单确认 | 只读 `demand.groups`(空则显示"召唤媒介经理"占位) |
| **`AI_OPTIMIZER=4`** | **AI投手准备 ← 执行单在这里** | 三个 tab:信息配置 / **投放策略** / **素材策略** |
| `UPLOAD_MATERIAL=5` | 投放素材准备 | 用户上传 |
| `GO_LIVE=6` | 投放执行 | — |
| `DASHBOARD=7` | 效果复盘 | — |
**两个策略 tab 的显示条件**(源码函数,决定我们必须灌哪些字段):
- **投放策略** `dc()`:`kpis` / `fields` / `deliveryHours` 任一非空
- **素材策略** `fc()`:`kpis` / `sellingPoint` / `specs` / `poolDesc` / `testDirections` / `brandAssets` / `coreClaim` / `creativeDirections` / `finishedSpec` 任一非空
→ **只要按本章节灌全 48 字段,两个 tab 的数据就都在**,用户在第一步点一次「确认」即进入执行单页。
**对外话术**:如实说"页面停在第一步需求单确认,你核对完点「确认」就进 AI投手准备,投放策略和素材策略都已经预填好了"。**不要**说"已打开执行单页"(不实),也**不要**当成故障道歉(这是平台当前行为)。
**给金手指侧的改法**(已提反馈):把两条路径的 `o(G.PLAN_PREVIEW)` 改为 `o( dc(ct)||fc(ct) ? G.AI_OPTIMIZER : G.PLAN_PREVIEW )`——含策略字段直接落执行单页,仅需求单才停第一步。
## 🚀 灌入金手指:open_config 全量字段(原 4/4;v1.26.0 起策略字段拼装完成后立即执行)
**触发**:段A/段B 策略字段拼装完成后**立即执行**(不等用户对话确认——用户确认在配置页面上完成;v1.26.0 起主路径**没有 HTML 落盘步骤**,拼完字段直接灌)。用户回对话说"重新灌/再开一次/过期了" → 也走本章节重新灌入(新 session 新链接,旧的自然过期)。
**执行流程**(严格按顺序):
1. **调金手指 `open_config`**(工具全名 `mcp__jinshouzhi__open_config`——2026-08-26 起金手指连接器 key 为 `jinshouzhi`(token 鉴权),14 个工具;旧 key `ad-goldfinger` 是残留通道不再使用)——⚠️ **全部走结构化字段,不传任何 HTML**(v1.16.0 起):
工具签名是 `strategy`(object,必填)+ `rawHtml`(string,可选)。**`rawHtml` 不用**——`strategy` 里直接给结构化字段,配置页前端本就支持结构化通道,比"生成 HTML 再用 DOM 解析回结构"更稳。
```
open_config({
strategy: {
// ══ 需求单:结构化 groups(对应配置页「需求单」区)══
demand: {
title: "投放需求单 · [项目名]",
meta: "[行业] · [投放目标] · [日期]",
groups: [
{ title:"基础信息", icon:"📋", fields:[
{k:"产品名称", v:"[offerId]"},
{k:"产品简介", v:"[demand_offer_intro]"},
{k:"核心卖点", v:"[demand_selling_points]"} ]},
{ title:"预算与目标", icon:"💰", fields:[
{k:"测试目标", v:"[demand_test_goal]"},
{k:"考核指标", v:"[demand_kpi]"},
{k:"总预算", v:"[demand_budget_limit]"},
{k:"投放周期", v:"[demand_budget_cycle]"},
{k:"上线时间", v:"[demand_launch_date]"} ]},
{ title:"人群策略", icon:"🎯", fields:[
{k:"客户类型", v:"[demand_audience_logic]"},
{k:"核心人群", v:"[demand_core_ta]"} ]},
{ title:"素材与承接", icon:"🎨", fields:[
{k:"现有素材", v:"[demand_has_material]", badge:"[风险提示]", badgeType:"warn"},
{k:"线上门面", v:"[demand_carrier]"},
{k:"商品渠道", v:"[demand_product_channel](C11 条件题,未问则整条略去)"},
{k:"开发资源", v:"[demand_dev_resource]"} ]},
{ title:"其他", icon:"📎", fields:[
{k:"合规要求", v:"[demand_compliance]"},
{k:"历史经验", v:"[demand_history]"} ]}
],
footNote: "由金手指 · 媒介经理生成"
},
// ══ 策略单:结构化字段(对应配置页「投放策略」区)══
offerName: "[项目名]",
pathType: "[基建/诊断]",
deliveryMode: "[智投 AIM+ / 标准投放]",
isSmartDelivery: true, // 派生字段(v1.23.0):deliveryMode 为智投时 true,不独立取值
optimizationGoal: "[og 英文枚举,如 CLICK]", // v1.23.0:由开发资源+知识库判定
optimizationGoalName: "[og 中文名,如 点击]", // v1.23.0:与英文枚举成对展示
accountCount: 1,
accountNote: "[如:新白户]",
dailyBudget: 1500, // 数字,元
totalBudget: 50000, // 数字,元
bidding: "oCPM", // 转化 og 配套;兜底场景(点击 og AD_CLICK)改 CPC
bidRange: 96, // 数字单值(元),不给区间(v1.20.0 起口径;考核成本×50%-70% 推导结果)
kpi: "[考核成本上限,如 成本≤90元(CPA)]", // v1.23.1:单指标、只用成本口径
kpiRedline: "[考核红线,v1.24.1 独立指标;成本类=常规×1.2-1.3 上浮,ROI/量类=常规×0.7 下浮;触发动作暂不建设]",
adStructure: "[如 3条广告 × 3创意组 × 5素材]",
adCount: 3,
creativeGroupCount: 3,
audience: "[人群定向建议]",
// placements 已删(v1.24.3):主投版位不灌入(智投场景系统择优无预设值),金手指页面手动配置
deliveryPeriod: "[如 30天]",
launchDate: "[YYYY-MM-DD]",
watchTimes: ["09:00","12:00","14:00","16:00","18:00"],
// ⚠️ materialPool 按"段B 预算驱动测算结果"动态填,示例值仅示意(<1000 档 → 10 张纯图片;>1万 → 按账户数 50张/账户 + 可做视频)。**不要照抄这个示例值**(v1.20.0 修复:旧示例 {50,10,40} 是已废弃的"固定 50 条=10视频+40图文",容易诱导回退旧逻辑)
materialPool: { total:20, video:0, image:20 },
sellingPoint: "[一句话卖点]",
coreClaim: { claim: "[核心主张]", reason: "[判断理由]" }, // Part 3(v1.24.5 起)
creativeDirections: [ // Part 3 素材方向(v1.24.5 起由 materialTypes 更名)
{ category:"image", type:"[官方13类之一]", priority:"主推", count:8, size:"竖9:16 1080x1920", message:"[怎么给用户传信息·大白话]" }
],
materialSpecs: ["竖版9:16 1080x1920","方图1:1 800x800"],
finishedSpec: "[成品交付规格:裁剪/压缩要求]", // Part 3
outerCopy: ["[外层文案1]"], // Part 4(v1.24.6 起 copyDeck 拆三)
firstComments: ["[首条评论1]"],
ctaCopy: { primary: "[主选按钮文案]", backup: "[备选]" }
}
})
```
> **字段依据**(已抓配置页前端 JS 核实,勿臆改):
> - 需求单:`rawDemandHtml || demandHtml` 若是 HTML 则 DOM 解析;**否则读 `demand.groups`(我们走这条)**
> - 策略单:`rawHtml || html` 若是 HTML 则解析;**否则走纯结构化分支读上面那 23 个字段(我们走这条)**
> - `fields` 里每项结构:`{k, v, badge?, badgeType?, pending?, full?}`;`badgeType` 取 `ok`/`warn`/`danger`
>
> **为什么不传 HTML**:HTML 通道依赖前端 DOM 选择器(`.sec` `.field` `.k` `.v`),我们改模板样式就可能解析失败;结构化字段直给,不存在解析风险。实测 `success:true` / `degraded:false`,页面正常预填。
**填值规则**:
- 数值字段(`dailyBudget`/`totalBudget`/`adCount` 等)传**数字类型**,不要传 `"1500元"` 这种字符串
- `demand.groups` 里**没问到的字段整条略去**(不写"待定/缺失"占位);分区内全空则整个分区不放
- 用户答"没有"的项**要如实带上**并配 badge(如现有素材"都没有" + `badge:"需从零准备"`)
- 值都从对话上下文的立项单文字 + 本环节执行单内容取,**不编造**
2. **取返回的 `sessionId`,做 session 双重校验**(⭐ v1.26.0:字段校验 + 存活复查;2026-08-25 实测教训——灌入成功后服务端重启清了内存 session,3 分钟后链接 404,用户点开空白):
- **为什么改走 session 短链**:`recommendedLink` 的 `#s=` 内联深链 1000~3000+ 字符,在 AI 调用链复制转手中**稳定损坏**(两次实测 1358/1370 字符均 gzip 报废,232 字符才安全)——不是 URL 超长(上限 32000),是复制保真问题。而 `?session=` 深链只有 32 位 hex,**零复制风险**;FAT 单实例下 session 一定能查回(curl 实证)
- **deepLink 禁令修订(v1.25.2,分环境)**:~~"绝不给 deepLink"~~ → **FAT/单实例环境放行**(先 curl 验证 session 在,再 open);**生产/多副本环境仍禁**(内存 session 多副本查不回,点开空页——v1.11 教训不变)
- **curl 字段清单校验(必做,能精确抓漏传字段)+ 存活二次校验**——命令只做校验,**打开不在这条命令里**(一律 present_files,见下):
```bash
SID='<返回的 sessionId>'
BASE='https://ad-goldfinger.app.fitgroup-fat.com' # 按当前连接器端点,勿照抄
# ① 字段清单校验(抓漏传字段)
curl -s --max-time 10 "$BASE/api/mcp/session/$SID" | python3 -c "
import json, sys
d = json.load(sys.stdin)
assert d.get('success'), 'session 不存在或已过期'
s = d.get('strategy', {})
P2 = ['offerName','pathType','deliveryMode','optimizationGoal','optimizationGoalName',
'accountCount','accountNote','excludedPlacements','adStructure','adCount',
'creativeGroupCount','bidding','bidRange','kpi','kpiRedline','dailyBudget',
'totalBudget','launchDate','deliveryPeriod','audience','deliveryHours',
'budgetAllocation','watchTimes']
P3 = ['sellingPoint','coreClaim','creativeDirections','materialPool','materialSpecs','finishedSpec']
P4 = ['outerCopy','firstComments','ctaCopy']
g = len(s.get('demand', {}).get('groups', []))
m2 = [k for k in P2 if s.get(k) is None]
m3 = [k for k in P3 if s.get(k) is None]
m4 = [k for k in P4 if s.get(k) is None]
print('offerName:', s.get('offerName'), '| demand 分区:', g)
print('Part2 漏:', m2 or '无', '| Part3 漏:', m3 or '无', '| Part4 漏:', m4 or '无')
assert g >= 1 and not (m2 or m3 or m4), '有字段漏灌'
print('字段校验通过')
"
# ② 存活二次校验(⭐ v1.26.0 新增):灌入成功 ≠ 链接可用——服务端重启会清空内存 session
# 实测:19:58 灌入成功 → 19:59 服务重启 → 20:01 查询 404(TTL 明明 30 分钟)
sleep 2
CODE=$(curl -s --max-time 10 -o /dev/null -w '%{http_code}' "$BASE/api/mcp/session/$SID")
[ "$CODE" = "200" ] && echo "存活确认 OK,可以拉起页面" || echo "存活确认失败(HTTP $CODE)→ session 已被服务端清掉,需重新 open_config 重灌"
```
- **校验报错处理**:
- `session 不存在或已过期`(30 分钟 TTL)→ 重新调 `open_config`
- `有字段漏灌`(列出具体 key)→ 回到第 1 步补齐该字段重灌——**2026-08-24 实测此清单抓出过漏传的 `creativeGroupCount`**,比肉眼看页面猜"还差几项"精确得多
- **存活复查非 200**(⭐ v1.26.0)→ 服务端刚重启过、session 已被清——**重新调 `open_config` 拿新 session 再走一遍校验**;重灌成功后向用户如实说一句"刚才服务端重启了一下,我重新灌了一版"(保真规则:不装作没发生)
- `inlineMode` 返回 `lite` 是**正常的**;只有 `degraded:true` 才提示用户"内容较多,页面可能只预填了部分字段"
- **兜底链接前置(⭐ v1.26.0)**:右栏预览面板对深链渲染**偶发空白**(v1.25.1 已记录 iframe 对深链不可靠,两次实测空白)——兜底 markdown 超链接**不能等收尾才给**,要和 present_files 拉起页面**同一条回复**里就带上,用户看到空白立刻有出口:
```
已在右栏打开配置页;右栏要是空白的,点这里进配置页:[点这里进配置页]({{BASE/pre-launch?session=SID}})
```
session 短链本身就是短 URL(~90 字符),可直接做链接目标
3. **生产/多副本环境 fallback(暂未启用)**:若 curl 查不回 session(多副本路由到别的实例),退回 `recommendedLink`(`#s=` 内联)——但 AI 调用链复制长 URL 有稳定损坏风险,**生产就绪依赖金手指侧加 `inlineChecksum`(payload sha256 前 8 位)或短码模式**(已列入给金手指的对接建议)。就绪前的过渡做法:URL 只复制一次进 shell 变量,同一条 Bash 命令「python 解码 `#s=` 校验 offerName → 通过才用 present_files 打开」,报错即重调 `open_config`(新链接重试,30 分钟机制内可多次)。
- 🚨 **打开一律走 `present_files` 传 session 短链**(右侧面板内拉起)——❌ **没有第二条路,绝不走 `Bash open` 跳外部浏览器**(用户实测反馈:跳外丢失对话上下文;agent 默认动作"Bash open"是 shell 语义陷阱,必须在 skill 里彻底排除这个选项;**校验命令里也不许内嵌 open**)。仅 fallback 模式(MCP 不可用)下的 HTML 存档产物走 present_files 推卡片
4. **收尾话术**:session 双重校验通过、present_files 拉起配置页后,按《交接摘要》章节的收尾话模板输出(含**前置兜底链接**/大体打法/风险处理/页面待办/30 分钟有效期提示);fallback 模式(写了 HTML)才提存档路径。**保真规则**:只说实际发生的事。
**异常处理**:
- 金手指工具不可用(MCP 未连接)→ 提示:"开启投放需要连一下金手指(广告投放系统)。你在左侧连接器里把「金手指」连上,我再继续。"不硬调
- 返回鉴权失败 → 提示:"这个项目还没在金手指里托管腾讯广告 Key——到金手指「项目管理 → 腾讯广告 Key 托管」配置一下,配好我再试。"
- `open_config` 报错 → 如实告知,不编造"已灌入"
**灌入之后的延伸(用户主动问时才做)**:
- "看下数据" → 调 `get_project_data`(project=项目名,days 默认 7)
- "有哪些项目" → 调 `list_projects`
- 调整预算/出价/暂停 → 调 `adjust_project`——⚠️ **写操作必须先复述将要执行的调整,用户确认后才传 `confirm:true` 执行**;未确认只返回预览
> ✅ **落库读写工具状态注记**(2026-08-25 复验,MCP v1.0.5 / server 1.0.48):金手指服务端问题 #3(生产库 `db_prod_ad_goldfinger.projects` 表不存在)**已修复**——`list_projects` / `get_project_data` / `adjust_project` / `validate_apikey` / `upsert_demand_brief` / `get_project_context` **恢复可用**(0824 曾全挡,历史注记作废)。用户问数据/调整时正常调用即可(写操作仍必须先复述确认再 `confirm:true`)。
> **灌入预填与落库无关**(2026-08-24 源码核实):`recommendedLink` 的 `#s=` 内联 payload 是**纯客户端解码**(gzip+base64url,`PreLaunch.tsx` 的 decodeInline),与服务端数据库完全无关——只要 URL 复制完整,页面预填就正常。**"页面空白/显示旧数据"先查 URL 是否复制损坏**(走上方校验闸门)。落库增强(现已可用):open_config 灌入后**额外调一次** `upsert_demand_brief`(project + payload = strategy 全量)实现按项目落库、页面刷新后仍在。
## 打印交接摘要(给下游读)
```
【交接点2 产出:投放策略(金手指已灌入)】主路径无本地 HTML 产物(v1.26.0 起字段直灌)
- 需求字段 → 从提需 session 的 strategy.demand.groups 取(curl 校验时已拉回)✅
- 段A 投放策略 + 段B 素材策略 + 文案 → open_config.strategy 全量 48 字段 ✅
- v1.26.0 起字段拼装完成即灌入(已调 open_config,session 双重校验通过,配置页已 present_files 拉起)
- fallback 模式才有文件:投放产出/[YYYY-MM-DD]/投放执行确认单-[项目名].html(MCP 不可用/degraded 时)
- 用户在页面核对/改字段 → 生成投手/上传素材/项目上线
- 后续数据/调整 → 金手指 get_project_data / adjust_project
```
## 上下游对齐(接口契约)
| 下游需要 | 本环节产出? | 状态 |
|---|---|---|
| **投放方式(标准/智投)判定** | ✅ 段A「投放方式」字段 | 对齐(试跑补) |
| 账户/版位/广告/出价/预算/定向 | ✅ 段A | 对齐 |
| ai投手专属配置+盯盘节奏 | ✅ 段A | 对齐 |
| 转化归因配置提醒 | ❌ v1.18.0 起不输出(属前置条件,交给用户自查) | 砍 |
| 图片创意「仅上传+建创意」SOP | ❌ v1.18.0 起砍段C(属 ai投手自身职责,越界) | 砍 |
| 核心主张+创意类型推荐(13类+视频4类)+数量测算+尺寸+成品规格 | ✅ 段B(v1.17.0 素材策略规范) | 对齐 |
| 品牌资产(logo/主色/slogan/风险语) | ✅ 段B透传·引用需求清单 | 对齐 |
| 账户ID列表/落地页URL | ❌ 用户在ai投手投放前提供 | 见提醒 |
## 全局原则
- 五维基建/诊断方法论参考 `ai-analysis-expert-newproject`/`-diagnose`,**不改原 skill**。
- **投放方式判定**:用户指定版位→标准投放;未指定/接受智能择优→智投AIM+。判定结果写入段A,ai投手据此选建单skill。
- 缺口C:品牌资产**引用**需求清单,不复制原始文件,素材助手以需求清单为准取原图。
- **两段一气呵成产出**(v1.18.0 起;v1.26.0 起无 HTML):段A+B 一次做完,不做段间确认(段C 已删)——主路径直接落成 strategy 结构化字段灌入金手指,**不写本地 HTML**
- **主路径无 HTML;HTML 仅 fallback**(v1.26.0 起):仅当金手指 MCP 不可用 / `degraded:true` 时,才写《投放执行确认单-[项目名].html》存档——**骨架走 `html-report-card`(与可行性评估同模板,v1.28.0 起统一)**,内容结构照 `references/html-memo-template.md`,theme.css 全文内联、文件自包含,跑 check_html.py 0 error 才交付;按既定轨道打开,话术改回"确认后我再灌入"
- **UI 必须与可行性评估一致**(v1.2.1 起,仅约束 fallback 产物):系统字体 + `#f7f7f5` 纸底 + 单白卡 + `#378ADD` 主色 + 细线分隔 + **topbar 金手指 logo**(v1.14.0 起);禁止玻璃拟态/渐变文字/深色代码块/入场动画。写文件前过一遍模板末尾「一致性自检」。
- ✅ **v1.28.0 已统一**:fallback 确认单与可行性评估**共用 `html-report-card` 卡片规范**(用户决策 2026-08-26)——两份产物 UI 一致;`html-memo-template.md` 降级为纯内容结构指南。
- **策略完成必须灌入金手指**(v1.25.0 起取代 v1.5"写完必须打开";v1.26.0 改述):段A/段B 字段拼装完成后立即 `open_config` 灌入 + session 双重校验 + present_files 拉起配置页,不要只说做了什么而不做。**灌入成功 ≠ 交付完成**——校验失败要重灌并如实告知用户。
- ⭐ **立项单从对话上下文读**(v1.27.0 起):不要 Read 立项单文件(不存在),也不要 curl session(提需阶段已不灌入,无 session);直接从对话栏那份完整立项单文字逐字段取值。
- 🚨 **素材数量禁止照抄示例**(v1.26.0):`materialPool` / `creativeDirections[].count` / 外层文案与首评条数,**必须由段B 预算驱动测算公式当次算出**——禁止照抄本 skill 任何示例值、反例数字或上一个项目的数量(实测发现 agent 把反例里的"8 条素材"抄进了真实产出)。
- 🚨 **og 枚举照抄产物原文**(v1.26.0):`optimizationGoal` 英文枚举与 `optimizationGoalName` 中文名,**照抄段A og 判定结论的原文**(评估/确认逻辑里定的是什么就传什么),灌入时不临场改枚举、不凭印象编——枚举错位会导致金手指页面按钮/目标错配。
## 参考资源
- `references/html-memo-template.md`:**策略纪要 HTML 模板**(生成纪要时必须对照,含 CSS 设计系统、三段结构骨架、占位符填写指南、段导航 JS、一致性自检清单)。**UI 基准以本模板为准**(v1.3 起立项单已无 HTML 模板)。
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!