Ai Promotion Query

腾讯音乐人宣推数据查询能力。当用户提到"我这些歌宣推情况如何"、"看一下宣推数据"、"这首歌宣推效果怎么样"、"我有哪些歌在投放"、"这首歌还要不要继续投"、"宣推诊断"、"宣推表现"、"投放效果"等与宣推数据查询相关的请求时触发。本 Skill 整合了两大子场景:① **宣推概览**——拉取当前登录用户名下所有宣推歌曲的概览(账号级 + 单曲摘要列表);② **获取歌曲宣推指标**——按 `songId` 查询指定单首歌的宣推指标详情。③ **结合宣推知识库做指标分析**——基于 `knowledge.md` 把原始指标转成分阶段诊断、加投/维持/调整/暂停建议与后续追问。

Audits

Pass

Install

openclaw skills install ai-promotion-query

AI Promotion Query(腾讯音乐人宣推数据查询)

✨ 自包含登录态:本 Skill 需要用户登录态,已由 tme-openapi Skill 自动处理——无需任何手动架设。首次使用会弹出浏览器扫码登录,Token 有效期约 30 天。

⚠️ 前置依赖(算子调用能力):本 Skill 不自带 API 调用脚本,所有 TME OpenAPI 算子的发现与调用都委托给 tme-openapi Skill。你需要了解 tme-openapi 提供的 4 个通用工具(list_apis / search_apis / get_api_detail / invoke_api)及其标准调用流程。

⚠️ 对外表达依赖:本 Skill 的输出是上层 Agent(ai-promotion/readme.md)的内部数据依据,不直接面向用户。最终对用户的自然语言回复,必须遵守 ai-promotion/readme.md 的对外规则,并统一通过 宣推结构化输出 skill 输出。

本 Skill 分为两个部分:

  • Part 1 — 宣推数据查询业务流程:基于 tme-openapi 的通用调用能力,完成"宣推概览查询"和"获取歌曲宣推指标查询"两个子场景的业务编排。
  • Part 2 — 宣推指标分析:按需读取 knowledge.md,把查询结果归类到推广前 / 推广中 / 推广后规则,再生成定性判断、动作建议和衍生问题。

基础能力依赖:tme-openapi

本 Skill 的所有后端调用都通过 tme-openapi Skill 完成。该 Skill 提供 4 个通用工具来发现和调用腾讯音乐开放平台的「算子」API:

Tool(来自 tme-openapi作用在本业务中的典型用途
search_apis按关键词模糊搜索算子用关键词定位"宣推概览"、"获取歌曲宣推指标"算子
list_apis列出所有可用算子摘要搜索失败时兑底探查
get_api_detail获取指定算子的完整详情调用前查 inputSchema / detailedDescription
invoke_api调用指定算子真正发起业务调用(同步返回结果)

标准调用流程(由 tme-openapi 定义)

search_apis(keyword)  →  [可选] get_api_detail(operatorCode)  →  invoke_api(operatorCode, arguments)

当前算子平台仅支持同步调用invoke_api 一次请求即为终态,无需轮询异步结果。

脚本路径约定

tme-openapi 的脚本位于同级目录 ../tme-openapi/scripts/。在 qclaw / Code Buddy 中,脚本安装路径为 ~/.<client>/skills/tme-openapi/scripts/。本 Skill 正文中的「搜索算子」「调用算子」等步骤,都是对这些脚本的逻辑调用,不再赘述具体命令行形式——按 tme-openapi/SKILL.md 的"标准调用流程"执行即可。

核心编排原则(从 tme-openapi 继承)

  • 不硬编码任何 operatorCode 或参数结构,一律通过 search_apis / get_api_detail 动态发现
  • 登录态下不要accountId / userId 等身份参数,后端会从 Token 中自动识别
  • 遇到 INVALID_ARGUMENT,回退到 get_api_detail 重新确认 schema 和 example 后再试
  • 遇到 UNAUTHORIZED,引导用户删除 ~/.tme-login/token.json 后重跑,tme-openapi 会自动触发重新登录
  • 错误码含义与重试策略的完整表格,见 tme-openapi/SKILL.md

Part 1:宣推数据查询业务流程

注意:本 Skill 不硬编码任何算子 code 或参数结构。关于算子的参数细节、取值约束、返回结构等信息,请通过 tme-openapiget_api_detail 获取详情后,阅读 detailedDescription 字段,并参考本目录下 detailed_description_overview.md / detailed_description_metric.md 两份本地说明作为辅助。

核心背景

宣推数据查询是音乐人宣推助手的基础能力:

  1. 宣推概览 — 拉取当前登录用户名下所有宣推歌曲的整体情况(账号级摘要 + 单曲摘要列表),用于回答"我这些歌宣推情况如何"这类账号级问题,也用于后续从中筛选出目标 songIdyyrSongId字段。
  2. 获取歌曲宣推指标 — 按 songId 获取单首歌的完整宣推指标,用于回答单首歌的宣推表现、诊断、加投/止损判断等问题。

两个接口均为同步接口invoke_api 直接返回结果,无需关心异步轮询。

对外表达总原则(⚠️ 贯穿两个场景)

  • ❌ 禁止向用户展示任何具体金额、投放金额、购买播放量、投放天数等数字
  • ✅ 内部拿到的指标只能作为判断依据,对外必须转写为"表现较好 / 偏弱 / 一般 / 有提升空间 / 值得继续观察"等定性评价
  • ✅ 不输出"我来帮你分析"、"让我查询一下"、"数据查询成功"等过程态话术
  • ✅ 无法唯一定位歌曲时,不得追问 songId / 歌手名 / 发布时间 / 版本信息,固定使用 ai-promotion/readme.md 中的兜底文案

场景一:宣推概览查询

当用户说"我这些歌宣推情况怎么样"、"看一下宣推数据"、"我有哪些歌在投放"、"宣推表现如何"等账号级 / 未指定具体歌曲的问题时:

核心约束

  • 当前登录用户由登录态 Token 自动透传,不需要调用方传 userId
  • 若接口支持分页,pageNo 默认 1、pageSize 默认 10(以 inputSchema 为准)
  • 不要向用户暴露技术参数名称(如 pageNo / pageSize),对用户使用自然语言描述
  • 更多参数/返回细节参见 detailed_description_overview.md

Step 1:搜索宣推概览算子

通过 tme-openapisearch_apis

search_apis({ keyword: "宣推概览" })

若无命中,换用备选关键词重试:宣推歌曲宣推列表宣推数据。 从返回中定位名称/描述与"宣推概览 / 宣推歌曲概览"匹配的条目,记住其 name(operatorCode)。

Step 2:获取算子详情(强烈建议)

首次调用前,务必先获取详情

get_api_detail({ name: "<上一步找到的 operatorCode>" })

仔细阅读 detailedDescriptioninputSchemaexampleOutput。如与本地 detailed_description_overview.md 冲突,以后端返回为准

Step 3:调用宣推概览算子

根据 inputSchema 构造参数并通过 tme-openapiinvoke_api 调用:

invoke_api({
  name: "<operatorCode>",
  arguments: { /* 以 get_api_detail 返回的 inputSchema 为准,通常可传空对象 {} 或 { pageNo, pageSize } */ }
})

Step 4:处理返回并组装内部上下文

从返回中提取:

  • 账号级信息(是否曾有宣推歌曲、当前在投数量等)
  • 单曲摘要列表(songIdsongNamepromotionStatus、定性标签等)

该结果 不直接对外,而是作为上层 ai-promotion/readme.md 判断问题类型、组装回答所需的内部数据。

场景一对外输出要点(遵循 ai-promotion/readme.md 的 B 类或 A 类规则)

  • 用户问的是整体情况 / 账号级 / 不指向具体一首 → 走 B 类规则:一个或多个 message + 最后一个 moreQuestions(4 个衍生问题),不输出 songCard
  • 用户问的是某一首但歌名模糊 → 先在概览里做匹配,若能唯一定位到一首,带着 songId 进入场景二;若无法唯一定位,按 ai-promotion/readme.md 的"单首歌无法定位规则"输出固定兜底文案
  • 禁止在对外回复中直接展示歌曲列表的原始数值字段(如具体播放量),只做定性总结

场景一边界情况

情况内部处理对外表达
返回列表为空判断是否从未宣推过用定性语言告知"当前没有在宣推的歌曲",不要暴露技术细节
UNAUTHORIZED登录态失效引导用户删除 ~/.tme-login/token.json 后重跑(tme-openapi 会自动重新登录)
请求超时 /UPSTREAM_ERROR重试 1-2 次仍失败则使用ai-promotion/readme.md 中的"系统繁忙"兜底文案
用户继续问某一首从概览结果中匹配songName / 关键词匹配成功则进入场景二;匹配失败按"单首歌无法定位规则"输出兜底文案

场景二:获取歌曲宣推指标

当用户说"这首歌宣推效果怎么样"、"《XXX》宣推诊断"、"这首歌要不要继续投"、"这首歌宣推有什么问题"等指向单首歌的问题时:

核心约束

  • songId 必填。如无 songId,先走场景一拿到候选池并匹配
  • 已在上下文中(概览结果、做歌结果、发行结果、上层透传)拿到 songId 的,直接使用,不要再向用户追问
  • 本接口通常为同步,直接返回结果
  • 不要向用户暴露 songId / 技术参数名称
  • 更多参数/返回细节参见 detailed_description_metric.md

Step 1:准备 songId

按优先级尝试:

  1. 上下文中已存在 songId(上层 Agent 透传、概览匹配结果、做歌/发行透传) → 直接使用
  2. 用户给了歌名 → 先调用场景一的"宣推概览",在返回列表里按 songName 匹配
  3. 依然无法唯一定位 → 不要追问用户,按 ai-promotion/readme.md 的"单首歌无法定位规则"输出固定兜底文案(抱歉哦,系统繁忙中暂时无法为您提供该歌曲宣推评估...

Step 2:搜索获取歌曲宣推指标算子

通过 tme-openapisearch_apis

search_apis({ keyword: "获取歌曲宣推指标" })

若无命中,换用备选关键词:宣推指标宣推数据详情单曲宣推歌曲宣推详情。 记下匹配条目的 name(operatorCode)。

Step 3:获取算子详情(强烈建议)

get_api_detail({ name: "<上一步找到的 operatorCode>" })

仔细阅读 detailedDescription / inputSchema / exampleOutput。若与本地 detailed_description_metric.md 冲突,以后端为准。

Step 4:调用获取歌曲宣推指标算子

通过 tme-openapiinvoke_api

invoke_api({
  name: "<operatorCode>",
  arguments: {
    "songId": "<目标歌曲ID>"
    /* 其他字段以 inputSchema 为准,如 startDate / endDate */
  }
})

Step 5:组装内部上下文,交由 Part 2 做分析

拿到返回后:

  • 提取基础信息(歌名、封面、发行时间、生命周期阶段等)
  • 提取核心宣推指标(播放表现、完播、转化、投放节奏、素材维度等)——仅作为内部判断依据
  • 提取定性标签(如后端已提供 performanceTag / diagnosisTag),优先用定性字段对外

后续分析与回答组装逻辑,见 Part 2:宣推指标分析

场景二对外输出要点(A 类问题,严格遵循 ai-promotion/readme.md

A 类问题必须按以下顺序输出 4 个协议块(全部通过 宣推结构化输出 skill 输出):

  1. 总结性 message — 对该歌曲当前宣推表现的定性总结(亮点 / 短板 / 当前状态),严禁展示具体指标数值
  2. songCard{"songId":"<真实可定位的 songId>"}
  3. 建议性 message — 围绕该单首歌的具体、可落地的操作建议,必须说明依据,避免空泛
  4. moreQuestions — 4 个衍生问题,优先落在知识库已覆盖主题(数据解读 / 问题诊断 / 投流节奏 / 素材优化 / 生命周期 / 加投止损判断)

场景二边界情况

情况内部处理对外表达
songId 且场景一无法匹配不向用户追问任何补充信息ai-promotion/readme.md 的"单首歌无法定位规则"输出固定兜底文案,不输出 songCard
songId 不存在 / 无权访问回到场景一重取候选池用定性语言提示"无法获取到该歌曲的宣推数据",不要暴露 songId 字段
歌曲不在宣推中无宣推数据可分析用定性语言提示"该歌曲暂无宣推数据,可以从其他歌曲入手"
INVALID_ARGUMENT回退到get_api_detail 重新确认 schema内部修正后重试,不要外露过程
UNAUTHORIZED登录态失效引导用户删除 ~/.tme-login/token.json 后重跑(tme-openapi 会自动重新登录)
请求超时 /UPSTREAM_ERROR重试 1-2 次仍失败则输出"系统繁忙"固定兜底文案

场景组合:先概览后指标(最常见)

1. 场景一:查宣推概览 → 拿到账号级摘要 + 单曲候选池
        ↓
2. 按用户问题定位目标 songId(或直接回答账号级问题并结束)
        ↓
3. 场景二:按 songId 获取歌曲宣推指标 → 拿到单首完整指标
        ↓
4. Part 2:结合宣推知识库做分析 → 按 A 类结构输出

Part 2:宣推指标分析

定位

本部分负责把 Part 1 查到的原始指标,结合本地知识库 knowledge.md,转化为对用户可用的诊断与建议

Part 2 现在按固定流程执行。执行时必须:

  1. 先判断问题属于账号级概览还是单首歌诊断
  2. 再判断歌曲当前所处的推广阶段:推广前 / 推广中 / 推广后
  3. 最后按 knowledge.md 的对应章节生成定性判断、动作建议和 moreQuestions

知识库使用方式

优先读取本地文件:

  • knowledge.md:宣推知识库主文件,包含指标口径、三阶段策略、特殊场景、FAQ、Agent 落地规则

按需读取,不要把整份知识库搬进回答。优先定位以下标题:

  • ## 2. 核心指标口径
  • ## 3. 推广前判断
  • ## 4. 推广中判断
  • ## 5. 推广结束后的复盘判断
  • ## 6. 特殊场景适配
  • ## 7. FAQ 归纳
  • ## 8. 面向 Agent 的落地规则

输入

  • 场景一返回的账号级概览 + 单曲摘要列表
  • 场景二返回的目标歌曲完整指标
  • 当前对话上下文中的用户原问题
  • 如有:后端直接返回的定性字段(如 performanceTagdiagnosisTagpromotionStatus

分析主流程

Step 1:先判断问题类型

  • 用户问账号整体情况、歌曲集合表现、有哪些歌在投放 → 走账号级总结
  • 用户问某一首歌值不值得继续投、效果怎么样、哪里有问题 → 走单首歌分析

账号级问题以概览结果为主,不强行展开到单曲深诊断;单曲问题以 songId 对应的指标详情为主。

Step 2:判断推广阶段

结合用户问题、接口字段和知识库语义,把当前歌曲归到以下三类之一:

  • 推广前:更像是在问“值不值得推”“怎么起量”“适合哪种方式”,或当前主要是基础质量判断/冷启判断
  • 推广中:更像是在问“效果怎么样”“要不要继续投”“要不要换策略”,且有投流消耗、转化增长、杠杆率等在投指标
  • 推广后:更像是在问“这轮投完之后要不要再追投”“是否还有长尾价值”,或上下文明确推广已结束

若阶段不明确,优先按用户问法判断;若问法也不明确,再按数据字段判断。仍无法确定时,只输出保守结论,不越级给出强动作建议。

Step 3:读取对应知识库章节

  • 推广前:读取 knowledge.md## 2## 3
  • 推广中:读取 knowledge.md## 2## 4
  • 推广后:读取 knowledge.md## 2## 5
  • 遇到新歌无数据 / 小众风格 / 机构批量异质歌曲:额外读取 ## 6
  • 用户问解释型问题(如“什么是推币”“为什么消耗慢”):优先读取 ## 7
  • 准备最终输出前:回看 ## 8,确保没有把内部阈值直接说给用户

Step 4:把原始指标映射成定性档位

必须先做内部映射,再决定怎么说给用户。映射时遵守以下原则:

  • 优先使用知识库中已有的量化阈值和分层名称
  • 若后端已经给了定性标签,优先把后端标签和知识库规则交叉验证,而不是另起一套口径
  • 若缺少某些关键字段,只在已有证据覆盖的维度下结论,不补造缺失维度

重点关注:

  • 歌曲潜力:播放量、搜播量、转发量、收藏率、完播率、搜播率
  • 投流质量:投流消耗率、投流效率、杠杆率、收藏增量、下载量等转化增长
  • 生命周期与后续价值:是否适合追投、长尾维护或转自然运营

Step 5:生成内部分析结论

结论至少包含以下三部分:

  1. 当前判断:如“更适合小额冷启”“当前投放表现良好”“本轮更像长尾维护价值”
  2. 判断依据:引用命中的知识库逻辑与已拿到的数据维度
  3. 下一步动作:给出继续加投 / 维持观察 / 切换方式 / 暂停付费 / 转自然运营等建议

若是账号级问题,可按“当前整体盘子 + 候选重点歌曲 + 共性建议”组织;若是单首歌问题,必须围绕当前这首歌给出判断。

三类阶段的具体规则

推广前

读取 knowledge.md## 3 后,优先把歌曲归入:

  • 优质飙升
  • 优质潜力
  • 冷启歌曲
  • 其他歌曲

然后按用户身份给建议:

  • 个人音乐人:强调是否适合直接推广、小额冷启、还是先做内容铺垫
  • 机构用户:强调是否纳入核心清单、次核心清单或剔除清单

补充平台与方式建议时,优先使用:

  • 智能推荐
  • 歌单推荐
  • 潜力养歌

推广中

读取 knowledge.md## 4 后,优先把歌曲归入:

  • 优质投放
  • 良好投放
  • 待调整投放
  • 低效投放

动作建议必须四选一为主:

  • 继续加投
  • 维持观察
  • 切换方式
  • 暂停付费

若需要补充原因,优先解释:

  • 消耗是否足够快
  • 转化是否有增长
  • 杠杆率是否说明付费投流正在撬动自然流量

推广后

读取 knowledge.md## 5 后,优先把歌曲归入:

  • 推荐追投
  • 长尾维护价值
  • 自然运营价值

后续建议要围绕:

  • 是否做二次追投
  • 是否保留轻量智能推荐
  • 是否转私域/短视频/直播等自然运营

特殊场景规则

遇到以下情况时,必须额外套用 knowledge.md## 6

  • 新歌无数据:按冷启歌曲处理,不做硬性卡线
  • 小众风格歌曲:允许柔性放宽标准,但只能给“小额冷启 / 继续观察”这类保守建议
  • 机构批量异质歌曲:按赛道分组理解,不把所有歌混成一个结论

输出约束

分析结果不直接对外,而是作为 A 类或 B 类问题输出结构的数据源,交由上层 ai-promotion/readme.md

生成时必须遵守:

  • 严禁在对外回答中展示任何具体指标数值、金额、天数、播放量等数字
  • 严禁在知识库未覆盖的情况下编造分析结论或空泛建议
  • 严禁为凑满 4 个衍生问题跨主题发散到行业趋势、达人资源、跨平台经验等方向
  • ✅ 无数据时,必须明确说明边界,不得伪造单曲数据或账号数据
  • ✅ 建议必须具体、可执行、围绕当前单首歌或当前账号问题展开,并说明判断依据

moreQuestions 生成规则

moreQuestions 必须从知识库已覆盖主题里挑 4 个,优先级如下:

  1. 数据解读
  2. 问题诊断
  3. 投流节奏
  4. 素材优化
  5. 生命周期判断
  6. 加投/止损判断

避免生成以下无依据问题:

  • 行业大盘趋势
  • 达人资源获取
  • 站外广告经验泛谈
  • 未在知识库中定义的跨平台打法

本地参考文档

文件说明
detailed_description_overview.md"宣推概览"算子的调用指引、参数参考骨架、返回结构参考、边界
detailed_description_metric.md"获取歌曲宣推指标"算子的调用指引、参数参考骨架、返回结构参考、边界
knowledge.md宣推知识库主文件:指标口径、推广前/中/后规则、特殊场景、FAQ、Agent 输出约束

以上两份文档为参考骨架,真实 schema 和字段以后端 get_api_detail 返回的 detailedDescription / inputSchema / exampleOutput 为准。


依赖链条总览

ai-promotion/readme.md               ← 最上层:音乐人宣推助手人设,定对外表达规则
        │
        ▼
ai-promotion-query (本 Skill)         ← 本层:业务编排(宣推概览 / 宣推指标 / 指标分析)
        │
        ▼
tme-openapi                           ← 基础能力:算子发现 + 调用,同时内嵌登录态获取(自包含)