B站三连广告-授权与主流程:三连 MAPI 的统一入口与 OAuth 调度

前言

用 Agent 接 B 站三连投放 MAPI 时,常见做法是让模型直接拼 curl 或手写 HTTP:并行打多个账户、把 access_token 写进命令行、在没查清账户范围前就改广告。三连侧对 client_id 有共享配额,旧版三层(计划/单元/创意)与素材化 2.0(项目/素材)接口也不互通。下面介绍 SkillHub 上的 B站三连广告-授权与主流程(内部名 bilibili-sanlian-ads):官方把它定位为任意三连广告任务的 Start-here 入口,先做意图澄清与授权,再按任务路由到投放、素材、报表等子 Skill。

这是什么

一句话:Bilibili Sanlian Ads MAPI 的全局授权、调用纪律与任务路由指南。

  • 展示名称:B站三连广告-授权与主流程
  • 包标识:slug: sanlian-ads,name: bilibili-sanlian-ads
  • 维护者:SKILL 元数据标注作者为 Benjamin,MIT 许可证;当前包版本 3.0.4
  • 分发:SkillHub 分类 business-ops(页面统计:评分 98707,下载 687 次)
  • 官方页:https://api.skillhub.cn/user_b0010d5c/sanlian-ads

它不负责具体创编字段全集(那些在各子 Skill 的 references/ 里,源自哔哩开放平台 MAPI 文档),而是解决「有没有 token、管哪个 account_id、该走 v3 还是 v4、下一步打开哪个 Skill」。

核心功能

以下能力均来自该 Skill 的 SKILL.md 说明。

面向运营的非技术交互

  • 用通俗中文澄清意图;不把 JSON、curl、本地凭据路径甩给用户。
  • 对可能产生线上影响的操作,先整理 operation brief(账户、account_id、读/写、对象层级、时间范围等),写入前走分阶段确认(意图确认 → 执行确认 → 多对象时的金丝雀与批次检查点)。
  • 细节见包内 references/operator-interaction-and-confirmation.md。

OAuth 2.0 与令牌生命周期

  • 通过捆绑客户端完成授权 URL、state 校验、授权码交换、刷新;access_token 有效期 24 小时,refresh_token 30 天(刷新成功会重置 30 天窗口)。
  • 本地凭据文件由 scripts/mapi_client.py 管理:按操作系统固定路径、0700/0600 权限、原子写入、跨进程锁;可用环境变量 BILIBILI_MAPI_CREDENTIALS 覆盖默认路径。
  • 支持查询授权 User、主体、投放账户及账户详情;多授权记录按账户范围合并或分存。
  • OAuth 与业务接口参考索引见 references/1846_开发者完整接入指南.md 等。

保守的 MAPI 调用纪律(共享配额)

  • 禁止并发:全局同时最多一个 MAPI 请求在飞;相邻请求启动间隔至少约 1 秒(客户端强制下限,不代表平台配额上限)。
  • 频控类错误立即停;只读临时故障最多一次退避重试;写入结果未知时禁止盲重试,只能走文档化的查询回读。
  • 每次请求需带 X-Call-Source: sanlian-skills 与 X-Sanlian-Skills-Version: 3.0.4;业务根域为 https://cm.bilibili.com/takumi/api,并需 Authorization: Bearer {access_token} 与 account_id。
  • HTTP 200 仍可能包业务失败,须对照对应 references/ 判断成功形态(code: 0、code: 200 或 status: "success" 等)。

旧版与 2.0 分流

结构 API 子 Skill
计划 → 单元 → 创意(v3) /open_api/cpc/v3/* bilibili-sanlian-ads-ad-management
项目 → 素材(v4,邀请制白名单) /open_api/cpc/v4/* bilibili-sanlian-ads-delivery

两套数据模型与 ID 空间隔离,不能互读互写;白名单账户新建只能走 2.0,既有旧广告仍用 v3 管理。不确定是否白名单时,应在已有 token 与 account_id 后探测 GET /open_api/cpc/v4/promotion/list,并区分 401 与业务级拒绝。

任务路由

用户目标 子 Skill
授权、令牌、账户范围(本 Skill) bilibili-sanlian-ads
2.0 项目/素材创编 bilibili-sanlian-ads-delivery
旧版计划/单元/创意 bilibili-sanlian-ads-ad-management
保存前可选枚举、定向、资源查询 bilibili-sanlian-ads-metadata
图片/视频素材 bilibili-sanlian-ads-materials
组织级资产、转化组件等 bilibili-sanlian-ads-assets
投放报表 bilibili-sanlian-ads-reporting
账户预算、钱包、流水 bilibili-sanlian-ads-account-finance
RTA 策略 bilibili-sanlian-ads-rta

出错时按 references/error-triage-and-handoff.md 做冷复查与支持信息整理。

中文触发词(便于在 Agent 里唤起):B站广告、哔哩哔哩广告、bilibili 广告、三连、三连投放、MAPI、开放平台、广告 API、授权、开发者、client_id、access_token、令牌、接入。

安装与启用

从 SkillHub 获取

在浏览器打开官方页并安装/导入到当前 Agent 环境(具体按钮以 SkillHub 页面为准):

https://api.skillhub.cn/user_b0010d5c/sanlian-ads

三连广告是一组协作 Skill:WorkBuddy 场景下文档要求导入 完整的 Sanlian OAuth 技能包(含入口 Skill 与相关领域 Skill),缺包时不要对线上账户发起请求。WorkBuddy 操作路径见包内 references/workbuddy-getting-started.md(「专家·技能·连接器」→ 上传技能);腾讯云 WorkBuddy 技能说明:https://cloud.tencent.com/document/product/1831/134432 。

Cursor、Codex CLI、Claude Code 的安装命令因产品集成方式不同,本稿未在官方页抓取到统一 CLI 语句,此处不臆造;以 SkillHub 页与各自产品的 Skill 导入能力为准。

运行依赖

  • Python 3.8+,标准库即可(无第三方依赖)。
  • macOS / Linux 使用 scripts/mapi.sh;Windows 使用 py -3 scripts/mapi_client.py 同等子命令。若可执行位丢失,可 sh scripts/mapi.sh ...。
  • 可选环境变量:SANLIAN_PYTHON(指定解释器)、BILIBILI_MAPI_CLIENT_SECRET(交换令牌时从 stdin 以外提供 secret)、BILIBILI_MAPI_CREDENTIALS(凭据文件路径)。

默认凭据路径(节选):

macOS:   ~/Library/Application Support/bilibili-sanlian-ads/credentials.json
Windows: %LOCALAPPDATA%\bilibili-sanlian-ads\credentials.json
Linux:   ${XDG_CONFIG_HOME:-~/.config}/bilibili-sanlian-ads/credentials.json

开发者 client_id / client_secret 需在 https://ad.bilibili.com/developer/onboard 完成资质与应用创建(Skill 内写明需销售/运营协助推进 MAPI 审核,周期约三个工作日量级)。

典型用法

建议的首轮流程(Agent 侧)

  1. 先 scripts/mapi.sh token-status,不要一上来就向用户要密钥。
  2. 无可用令牌(退出码 60)时收集 client_id、client_secret,走 OAuth。
  3. 查询主体与投放账户,写入操作前确认 account_id。
  4. 判断 legacy 或 2.0,再打开对应子 Skill 与其 references/。

OAuth 与探测命令

在 Skill 包根目录执行(Windows 将前缀换成 py -3 scripts/mapi_client.py):

scripts/mapi.sh doctor
scripts/mapi.sh auth-url <client_id>
scripts/mapi.sh auth-exchange "<完整回调 URL>"
scripts/mapi.sh token-status
scripts/mapi.sh token-refresh
scripts/mapi.sh call GET  <path> [--query-file q.json]
scripts/mapi.sh call POST <path> --body-file body.json

授权页形态(由 auth-url 生成):

https://ad.bilibili.com/developer/developer-authorization?client_id={client_id}&state={state}

用户从浏览器地址栏复制完整回调 URL(例如 https://sanlian.com?code=...&state=...)交给 auth-exchange;client_secret 走 stdin 或 BILIBILI_MAPI_CLIENT_SECRET,不要放在命令行参数里。

call 仅接受 /open_api/ 前缀路径;非 MAPI 请求(如公开稿件查询、预签名上传)不得走该客户端。

端到端示例(文档中的工作流摘要)

查消耗(只读)

  1. 本 Skill:令牌与账户范围。
  2. bilibili-sanlian-ads-reporting:自定义报表。
  3. 仅当用户问余额、预算、流水时再用 bilibili-sanlian-ads-account-finance。

创建广告(旧版)

  1. 本 Skill:operation brief、账户确认。
  2. bilibili-sanlian-ads-metadata:按 creation-field-source-map.md 拉可选值。
  3. bilibili-sanlian-ads-materials:备素材。
  4. bilibili-sanlian-ads-ad-management:计划 → 单元 → 创意,每步写入后查询核验。

创建广告(2.0 白名单账户)

  1. 本 Skill:确认白名单与意图。
  2. metadata → bilibili-sanlian-ads-delivery(项目、素材、绑定),各写操作边界单独确认。

运营侧口语示例(来自 WorkBuddy 入门指引):「查询账户 123456 昨天的消耗、曝光、点击和转化」「列出账户 123456 当前在投项目,只查询不修改」。

适用场景与注意

适合谁

  • 需要在 Agent 里稳定接入三连 MAPI 的开发者或投放运营(尤其不希望模型手写 HTTP 的场景)。
  • 任务会跨授权、创编、素材、报表、财务、RTA 等多模块,需要一个固定路由表的场景。

限制与坑

  • 勿只装入口 Skill 就操作线上账户;缺子 Skill 或 references/ 时应停止并补全包。
  • 勿把凭据写在 Skill 目录、项目仓库或云同步文件夹;勿在对话中回显 token 或完整回调 URL。
  • 商品管理、代理商管理、账户资质、激励券、转化回传协议等不在本技能集覆盖范围内,应指向官方文档或商务对接。
  • 修改 scripts/mapi_client.py 后应跑 scripts/mapi-test.sh 做本地回归(不触网、不用真实凭据)。

结尾

B站三连广告-授权与主流程把 OAuth、账户范围、调用顺序和子 Skill 路由收在一个入口里,让后续创编与报表都在同一套安全约束下执行。任意三连广告相关任务建议先加载本 Skill,再按路由进入领域包。

官方地址:https://api.skillhub.cn/user_b0010d5c/sanlian-ads

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜