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

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

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

小夜