灵渠发现页Banner配置编排。数字员工负责预占、收料、比对帧位排期、决策不一致,后台真实写操作委托 promotion-apply-skills 执行,催办交灵渠助手。三个阶段共享一张追踪表。触发场景:(1)PM私聊或群内表达预占排期意图(说"预占""帮我占排期""建推广"等)— 阶段一排期预占;(2)PM私聊...
---
name: lingqu-banner-config
description: '灵渠发现页Banner配置编排。数字员工负责预占、收料、比对帧位排期、决策不一致,后台真实写操作委托 promotion-apply-skills 执行,催办交灵渠助手。三个阶段共享一张追踪表。触发场景:(1)PM私聊或群内表达预占排期意图(说"预占""帮我占排期""建推广"等)— 阶段一排期预占;(2)PM私聊发物料素材(图片/角标/资源ID/跳转链接)— 阶段二收料配置;(3)任何人在群里@数字员工并发帧位排期(说"最新版帧位排期"或含排期格式的消息)— 阶段三比对;(4)PM或业务方说"延期""恢复排期""取消"— 阶段三异常;(5)PM说"换物料""换图""换链接""换角标"— 阶段三换物料。'
metadata:
version: 1.0.0
---
# 灵渠 Banner 配置编排
> **本 skill 是「脑」,不直接拼 CLI。** 所有后台真实写操作(建推广/预占/配物料/复制/改时段端口)一律**委托 `promotion-apply-skills`(技术那套,简称"技术那套")**执行;催审批/催素材由灵渠官方机器人「灵渠助手」自动接管。数字员工负责:预占触发、收料判齐全、算业务正确值、比对帧位排期、决策不一致、写追踪表、过收尾门禁。
> 🧷 **委托不是模仿命令:** 一旦进入交接①/②/③,本 skill 必须停止生成或执行任何后台请求,只输出“交接单”并切换到 `promotion-apply-skills` 的规则执行。不能在本 skill 里自己调用 `mws link promotion-update-creative`、`backend-nos-token-whalealloc`、`plan-pack-resource-list`,也不能把 `promotion-apply-skills` 文档里的命令复制过来改参数执行。没有实际进入 `promotion-apply-skills` 并跑它的预检脚本,就视为没有完成技术那套。
> ⚠️ **入口唯一声明:** 凡灵渠发现页 Banner 相关需求(预占/配置 banner/发物料/帧位排期/换物料/取消),**PM 的自然语言入口一律先进本 skill**。`promotion-apply-skills` 是本 skill **内部委托调用的后台工具**,不直接响应 PM 的自然语言请求——即使 PM 的话命中了它的描述(如"配置发现页 banner"),也必须先进本 skill,由本 skill 决定何时委托它执行后台写操作。
## 0. 三方分工(务必先记牢)
| 谁 | 干什么 |
|----|--------|
| **数字员工(本 skill)** | 接住PM消息/群路由、收料判齐全、**算业务正确值**(空降链接/数专链接/角标/人群包/资源类型/**5字段+推广名拼接**)、比对帧位排期、决策不一致、写追踪表、收尾门禁对账 |
| **技术那套 `promotion-apply-skills`** | **工具,不是 Agent**——同一 LLM 切换 prompt context 执行的另一组规则,**没有"另一个人"在那边和 PM 沟通**。只能看数字员工传过来的入参做后台 CLI 调用:promotion-add(建+预占)、promotion-update-creative(配物料→直接发审批)、promotion-copy+update(复制改时段端口)、promotion-detail(查)。创意结构、NOS 上传、资源默认值、模板提取、预检脚本只能由技术那套生成/执行;数字员工不得传 `promotionAliasCreativeList` / `promotionCreativeList` / `creative` / `templateSchema` / `creativeDetailDataVO` 成品包,也不得直接请求技术接口。 |
| **灵渠助手(官方机器人)** | 自动催审批 + 催素材(按"距上线时间 + 待配置状态"扫库,精准催到 PM 个人),数字员工**不再做任何催办** |
> 🖼️ **图片 URL 路由:** PM 发来的图片文件、图片 URL、NOS/NOSK 链接、`mb-mlbclaw-pub`/`nos-jd`/`p5.music.126.net` 等地址,都只算“原始图片素材”。数字员工不能把这些地址当最终图片 URL 写入 J 列或创意 payload,也不能判断“已经是 NOS 就不用传”。交接②时原样转给技术那套,并要求技术那套下载到本地、按模板校验/裁剪确认、重新上传 NOS 后再写最终 URL。
> 🛑 **防绕过路由:** 如果上游、PM 或机器人消息里已经出现 `mws link promotion-update-creative` 命令、`/api/link/platform/ai/promotion/updateCreative`、`promotionAliasCreativeList`、`promotionCreativeList`、`creativeDetailDataVO`、`templateSchema` 这类成品创意结构,本 skill 必须判定为“绕过技术那套的错误输入”,不能原样执行、不能帮它补几个字段后继续。只能拆回业务输入:推广 ID、资源类型/资源 ID、全量/非全量、人群、原始图片素材、角标、端维度跳转链接/摘要、审批说明,再交接②给 `promotion-apply-skills` 重新查详情、提模板、组包和预检。
> 🧹 **配置前清缓存:** 交接②前后都不能信浏览器页面里残留的物料预览,也不能让技术那套复用旧 `/tmp` JSON、旧模板、旧默认值、旧裁剪图、旧 NOS 上传结果。交接②必须明确要求技术那套为当前 promotionID 新建唯一工作目录,第一步重新查当前环境的 `promotion-detail`,再重新获取默认值、提模板、处理图片和预检。
> 🚫 **关键认知(v3):技术那套不会无中生有补全信息。** 数字员工传"空降"它才能映射出"艺人合作宣发";漏传它就填默认"其他类型"。v3 干脆让数字员工把推广名 5 字段(项目类型+4 前缀)算好整包传,**技术那套不再补问 PM**。
**3 个交接点**(数字员工调技术那套,整包交出→拿结果回,不来回横跳):
- 交接① 预占 → 技术那套 `promotion-add`(v3 数字员工传齐推广名+5 字段;资源/投放量/人群等初始化字段可第一步传,也可第二步物料提交前补齐)
- 交接② 配物料 → 技术那套 `promotion-update-creative`
- 交接③ 不一致 → 技术那套 `promotion-copy` + `promotion-update`
## 1. 核心原则
开始任何操作前,必须读取 `references/hard-rules.md`。以下是快速索引:
| 原理 | 一句话 |
|------|--------|
| 流程时序 | 预占(按config-matrix收齐创建字段) → 收料判齐全 → 素材齐即配物料(直接发审批) → 帧位排期来只处理不一致 |
| 追踪表是唯一真相源 | 不凭对话记忆,每次重新读表;进度只认 N 列状态 |
| 对 PM 闭嘴 | 只发结果、追问,禁止中间过程消息;催办归灵渠助手,数字员工不催 |
| 委托执行 | 后台写操作一律交技术那套,不自己拼 CLI;交接失败重试 2 次→通知王可+写 O 列 |
| 查表禁猜必问 | 配置方式全字段查 `config-matrix.md`;表里没写的问 PM,禁止脑补;物料提交前初始化字段前置校验 |
| 配完必查证(收尾门禁) | 一次只完整处理一个项目;配完/复制后回查后台真实态对账,不过不通知 PM |
> ⭐ **`references/config-matrix.md` 是 5 种配置方式全字段的唯一真相源**(初始化字段/收料边界/物料/链接拼接/人群/艺人),阶段一、阶段二、hard-rules 全引用它。
## 2. 路由决策
收到消息后,按优先级判断:
1. **任何人在群里 @数字员工 发帧位排期**(说「最新版帧位排期」或含排期格式)→ 阶段三
2. **PM 或业务方说 延期/恢复排期** → 阶段三异常:延期处理
3. **PM 或业务方说 取消/彻底不做了/黄了** → 阶段三异常:取消预占(N→已取消,PM 去后台取消预占)
4. **PM 说 换物料/换图/换链接/换角标** → 阶段三异常:换物料
5. **PM 说 预占/占排期/建推广** → 阶段一
6. **PM 发物料**(含图片/角标/资源ID/跳转链接)→ 阶段二
7. **无法判断** → 问「需要我帮你做什么?预占排期还是提交物料?」
PM 在群里发起 → 群内回「收到,我们私聊对接」→ 数字员工立刻主动 DM 该 PM。
## 3. 全局追踪表
整个流程共用一张表:
> **docId:** `f45584742d5047b8a46f578702043d65`
> **Sheet:** 配置追踪
> **列范围:** A-O(15 列)
所有搜表、写表操作均在这张表上进行。各阶段写入哪些列详见对应 phase 文件。
**全列定义(A-O 共 15 列,唯一总览):**
| 列 | 字段 | 说明 / 主要写入阶段 |
|----|------|------|
| A | 项目名称(推广名称全称) | 搜表/匹配用;阶段一写入 |
| B | 项目负责人(邮箱) | 群里 @人 标识;阶段一写入 |
| C | 群ID | 发送群消息用;阶段一(群发起时)/ 阶段三(用帧位排期群刷新) |
| D | 更新时间 | 各阶段每次操作刷新 |
| E | 开始时间 | 比对时段用;阶段一写入 |
| F | 结束时间 | 比对时段用;阶段一写入 |
| G | 端口/客户端 | 比对端口用;阶段一写入 |
| H | 配置方式(标准/数专/H5/空降/有票) | 阶段一识别写入,阶段二读取判齐全+算值 |
| I | 资源ID | 业务正确值;**标准方式阶段一写资源ID(创建字段);空降/数专的ID阶段二写(拼链接用)** |
| J | 跳转链接(拼好的/端维度摘要) | 业务正确值,防技术那套默认值出错;阶段二写入。标准资源可写“按资源默认值获取”,数专/H5/空降/有票写明确链接或端维度摘要;Web 链接必须是 http/https,禁止用 orpheus 兜底 |
| K | 角标 | 业务正确值;阶段二写入 |
| L | 人群包ID | 非全量字段;可以阶段一写,也可以阶段二/三物料提交前补齐。空降=66594/不包含、有票=PM值/包含 |
| M | promotionID | 交技术那套的句柄;阶段一写入、阶段二/三读取 |
| N | 状态 | 全程(状态机见 §3.1) |
| O | 备注 | 交接失败日志 / 原始↔副本关联 / 取消原因;各阶段 |
### 3.1 N 列状态机(4 状态)
> 全局唯一定义。所有 phase 文件引用此处,不再各自定义。审批后的后台状态(待审批/已上线)由灵渠助手负责,数字员工**不再追踪后台状态流转**。
| 状态 | 含义 | 扫表规则 |
|------|------|---------|
| **已预占** | 预占成功,尚未配物料(无素材 / 素材未齐 / 素材齐但还没配)。灵渠助手会按此状态催料 | 参与比对,按需配置 |
| **已配置** | 物料已配进后台并已发起审批。后续审批/上线由灵渠助手催,数字员工不管 | 参与比对(只查时段端口一致性) |
| **已替代** | 排期不一致时,原始推广被副本取代(终态) | 永久跳过 |
| **已取消** | PM 说项目彻底黄了 / 延期不上了 → 终态,PM 自行去后台取消预占 | 永久跳过 |
**扫表规则:**
- 比对 A(排期→表):匹配「已预占 / 已配置」
- 比对 B(表→排期):在「已预占 / 已配置」里找排期中消失的项 → 标「已取消」
- 终态(已替代 / 已取消):永久跳过
> 💡 没有独立"延期"状态:本期不上 = 已取消(PM 后续要上再重新预占)。没有"配置中"瞬时态:配物料是交接给技术那套的同步动作,靠收尾门禁兜底,不靠中间状态。
### popo-group @ 人规范
群聊发消息需要 @ 某人时,使用 `popo-group send`,**同时**满足两个条件才生效:
1. `--at` 参数:传入被 @ 人的完整邮箱(取自追踪表 B 列)
2. 消息正文:必须包含 `@邮箱` 的字面文本
```bash
popo-group send --tid <群ID(追踪表C列)> --at "email1@corp.netease.com,email2@corp.netease.com" --content "消息内容 @email1@corp.netease.com @email2@corp.netease.com"
```
详细使用参考 popo-group-cli 技能。
## 4. 阶段入口
### 阶段一:排期预占
**入口**:PM 说要预占/占排期/建推广
**流程**:
1. **ALWAYS** 先读 `references/hard-rules.md` + `references/phase-one-reserve.md` + `references/config-matrix.md`
2. 接住 PM 消息(群里发起 → 回「私聊对接」+ 主动 DM)
3. 识别**配置方式**(PM 说空降/有票/数专/H5/标准 → 定 H 列)
4. 按 config-matrix §2 收齐阶段一资源/艺人字段;按 §1.2 定 4 前缀+项目类型(死值查表 / 标准/数专/H5 的 3 字段问 PM 选)
5. 数字员工拼好完整推广名 = 【4前缀】项目核心名 –【内容运营部】
6. **交接① 调技术那套 `promotion-add`+预占**(整包传 §1.4 全部入参;技术那套只拆天/组人群 JSON/写后台,**不再补问 PM**)
7. 拿回 promotionID → 写追踪表:A/B/C/E/F/G/H/M,N →「已预占」
### 阶段二:收料配置(素材齐就配,不等排期)
**入口**:PM 私聊发物料
**流程**:
1. **ALWAYS** 先读 `references/hard-rules.md` + `references/phase-two-material.md`
2. 搜追踪表匹配项目(跳过终态),读 H 列配置方式
3. 匹配到 → 解析物料 / 未匹配 → 问 PM
4. 按 §3.3 对照表**判齐全**:
- **不齐** → 写表(已收的物料列),N 保持「已预占」,结束(灵渠助手会催料)
- **齐全** → 按对照表**算业务正确值**(资源类型/拼好的跳转链接/角标/人群包)→ 写表 I/J/K/L → **交接② 调技术那套 `promotion-update-creative`(直接发审批)** → 过收尾门禁对账 → N →「已配置」
### 阶段三:比对帧位排期
**入口**:任何人在群里 @数字员工 并发帧位排期
**触发后先回群确认**:
> 收到最新帧位排期,开始处理。
**流程**:
1. **ALWAYS** 先读 `references/hard-rules.md` + `references/phase-three-config.md`(正常)/ `references/phase-three-exceptions.md`(异常)
2. 每次以最新排期为准,全量重扫追踪表
3. 扫表按 §3.1 判断,**一次只完整处理一个项目**:
- 排期有 + 表里已配置/已预占 + **时段端口一致** → 不动(已配的已发审批;已预占的若素材齐走交接②配,缺料等灵渠助手催)
- 排期有 + **时段/端口不一致** → **交接③ 调技术那套 `promotion-copy`+`promotion-update`** 复制改时段端口 → 副本有素材则走交接②配物料 → 过门禁 → 写表(原行=已替代,副本=已预占/已配置)
- 表里有、排期没了 → N →「已取消」
4. **每条配置/复制后必过收尾门禁**(调技术那套 `promotion-detail` 回查后台真实态对账,不过不通知 PM,见 hard-rules 原理六)
5. **催办全交灵渠助手**,数字员工不发催料/催审批消息
## 5. 与 Starlink 的互斥规则
| 灵渠触发词 | Starlink 触发词 |
|---|---|
| banner、排期、预占、帧位、内容运营 | minibanner、starlink、智投、定投 |
- 两边都不以裸词匹配,需命中对应关键词
- PM 说的「banner」= 灵渠发现页 Banner;「minibanner」= Starlink 首页 minibanner
### 5.1 裸素材兜底(判断锚点:能否在表里匹配,而非只看关键词)
PM 私聊**只甩素材、没说是 banner 还是 minibanner**(图片/orpheus 链接/跳转链接/人群包 ID)时,**先定位归属,确认后只走一个 skill,绝不两个并行:**
1. 拿素材里的项目核心名,**反查两张表 A 列**:
- 灵渠追踪表 `f45584742d5047b8a46f578702043d65`(去 `【…】` 前缀、`–【内容运营部】` 后缀、核心名中 `_MMDD` 后再比核心名)
- Starlink 审核计数表 `582bd541b7f748ae9e8412322401e26b`(裸项目名,直接比核心名)
2. 按命中结果分流:
| 反查结果 | 处理 |
|---------|------|
| 只命中灵渠表 | 走灵渠阶段二(收料配置) |
| 只命中 Starlink 表 | 让出,不接,交给 Starlink skill |
| 两表都命中 | 反问 PM:「这条是灵渠发现页 Banner 还是首页 minibanner?」 |
| 两表都没命中 | 反问 PM:「灵渠 Banner 还是 minibanner?还没建过的话先说一下要占哪个。」 |
> 💡 两表项目名格式天差地别(灵渠带 `【…】` 前缀,Starlink 是裸名),命中通常唯一,反问只在罕见同名时发生。
> ⚠️ PM 已明确说关键词(banner/排期/帧位 或 minibanner/智投)→ 走快速路径直接进对应 skill,不必反查。
## 6. 后台操作 = 委托技术那套
数字员工**不再自己维护 CLI 命令清单**。所有后台真实写/查操作交 `promotion-apply-skills` 执行:
| 数字员工要做的事 | 委托技术那套的动作 | 数字员工的责任 |
|------------------|--------------------|---------------|
| 预占 | `promotion-add`(带 autoPreoccupy) | 整包传 config-matrix §1.4 已确认入参(**完整推广名+项目类型+4 前缀**+当前任务环境;用户明确预发布则 `pre`,否则默认 `online`;资源/投放量/人群可第一步传,也可第二步物料提交前补齐);跨天由技术那套拆 |
| 配物料 | `promotion-update-creative`(带 businessRemark 直接发审批) | **先算好业务正确值**(资源类型/资源 ID/拼好跳转链接或端维度摘要/角标/人群包)再喂,防默认值出错;图片 URL 只作为原始图片素材转交,不算“拼好的跳转链接”,也不写最终物料 URL。资源和资源 ID 可以阶段一已提供,也可以阶段二/换物料前置补问,但委托技术那套修改时必须已经齐。标准资源和换物料必须要求技术那套重新获取资源默认值并做 Web http/https 校验,不能沿用上游或旧创意 URL。禁止把 `promotionAliasCreativeList` 或 `creative` 成品结构交给技术那套;禁止数字员工直接调用 `/api/link/platform/plan/pack/resource/list` 或其它 HTTP 接口。图片、链接、角标、资源字段作为业务输入传,由技术那套查详情、用 `mws link plan-pack-resource-list --params '{"resourceType":"xxx","resourceIds":"id"}'` 获取默认值、提模板、下载图片 URL、重传 NOS、生成创意名、补 `tenant`、补全折叠端并预检。 |
| 复制改时段端口 | `promotion-copy` + `promotion-update` | 给原 promotionID + 算好的新时段端口 |
| 收尾门禁对账 | `promotion-detail` | 回查 ID/物料/状态是否与本行一致 |
**交接规范:**
- 交接动作必须是“进入 `promotion-apply-skills` 执行”,不是在本 skill 中拼 CLI。当前执行上下文必须读取 `promotion-apply-skills/SKILL.md` 并遵守其强制规则;否则不能调用任何后台写接口。
- 交接前把技术那套可能反问的点(环境、跨天拆分、缺字段)尽量喂饱,减少它在批量场景弹问题
- 交接②配物料时,只能交业务字段:推广 ID、环境、资源类型/资源 ID、全量/非全量、人群、原始图片素材、角标、端维度跳转链接或摘要、审批说明。严禁交 `promotionAliasCreativeList` 或任何 `creative*` 结构。交接时必须附加“清空上一轮配置缓存/新建唯一工作目录/重新查详情”的要求。
- 交接后拿返回值(promotionID / 成功 / needApproval / 失败),由数字员工写表
- 交接失败:重试 2 次(5s/10s)→ 仍失败按 hard-rules 原理四通知王可 + 写 O 列
- 环境使用当前任务前置确认值;用户明确预发布则 `pre`,明确线上或未说明环境都用 `online`。时间格式 `yyyy-MM-dd HH:mm:ss`
**交接②固定格式:**
```text
交接②:请进入 promotion-apply-skills 执行 promotion-update-creative
- promotionID:
- 环境: <当前任务环境;明确预发布=pre,否则默认 online>
- 配置方式:
- fullType: full/nofull
- resourceType/resourceTypes/resourceInfo:
- 非全量人群:
- 原始图片素材: 本地路径或图片 URL,仅作为原始素材,需技术那套下载/校验/重传 NOS
- 角标:
- 跳转链接/端维度摘要:
- 审批说明 businessRemark:
- 要求: 清空上一轮配置缓存,为当前 promotionID 新建唯一工作目录;重新查当前环境 promotion-detail,标准资源重新 plan-pack-resource-list,按模板提取各端,生成 creative.name/tenant/templateSchema/creativeDetailDataVO,运行 validate_update_creative_payload.py,用户确认最终端维度链接后再保存。
```don't have the plugin yet? install it then click "run inline in claude" again.