Canva:用 Connect API 程序化創建與導出設計

前言

做社媒物料的開發者常見的痛點:設計稿堆在 Canva 裏,文案和素材散落在運營手上,每改一版都要人工導出、再發回羣裏。Canva Skill 的思路是把「創建設計、導出文件、上傳素材」變成 API 調用,讓 Agent 可以直接驅動 Canva 產出成品。下面介紹這個 Skill 的定位、安裝和用法。

這是什麼

Canva(座標 @clawhub_abgohel/canva)是一個基於 SKILL.md 格式的 Agent Skill,由 abgohel 發佈在 ClawHub,來源 clawhub,版本 1.0.0,分類 design-media。官方地址 https://api.skillhub.cn/zechuan-zhuchuang/canva,上游倉庫 https://clawhub.ai/abgohel/canva。

它解決的問題:通過 Canva Connect API 創建、導出和管理 Canva 設計,以編程方式生成社交媒體帖子、輪播圖及圖形。Skill 頁面評分 100000,下載 11787 次,安裝 1425 次,標籤 requires_api_key=true——意味着需要自備 Canva 憑據。

核心功能

Skill 的能力全部落在 Canva Connect API(Base URL https://api.canva.com/rest/v1)上:

  • 列出設計、讀取單個設計詳情
  • 基於品牌模板調用 autofills 接口填充內容,生成新設計
  • 發起導出任務(異步),支持 PNG、JPG、PDF、MP4、GIF 五種格式
  • 上傳圖片等素材到 Canva 資產庫
  • 列出品牌模板(brand templates)

認證走 OAuth 2.0,Skill 自動處理 token 刷新,token 存儲在 ~/.canva/tokens.json。

安裝與啓用

安裝命令來自官方 Skill 頁面:

openclaw skills install @abgohel/canva

裝完還要自建 Canva Integration 並配置憑據。先到 https://www.canva.com/developers/ 創建新的 integration,拿到 Client ID 和 Client Secret,然後設置環境變量:

export CANVA_CLIENT_ID="your_client_id"
export CANVA_CLIENT_SECRET="your_client_secret"

首次使用先跑一遍授權流程拿 access token,之後按 Skill 提示調用即可:

# token 寫入 ~/.canva/tokens.json
ACCESS_TOKEN=$(cat ~/.canva/tokens.json | jq -r '.access_token')

Cursor / Codex CLI / Claude Code 的接入方式官方資料未分別說明,這裏不展開。

典型用法

下面幾個例子來自官方 SKILL.md,可直接復現。

先看有哪些品牌模板可用:

curl -s "https://api.canva.com/rest/v1/brand-templates" \
  -H "Authorization: Bearer $ACCESS_TOKEN" | jq .

選定模板後,用 autofills 接口填入標題和正文,生成一張設計:

curl -X POST "https://api.canva.com/rest/v1/autofills" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "brand_template_id": "TEMPLATE_ID",
    "data": {
      "title": {"type": "text", "text": "Your Title"},
      "body": {"type": "text", "text": "Your body text"}
    }
  }'

導出是異步任務,先發起,再輪詢狀態,完成後下載:

# 發起導出
curl -X POST "https://api.canva.com/rest/v1/exports" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "design_id": "DESIGN_ID",
    "format": {"type": "png", "width": 1080, "height": 1080}
  }'

# 查詢導出狀態
curl -s "https://api.canva.com/rest/v1/exports/{jobId}" \
  -H "Authorization: Bearer $ACCESS_TOKEN" | jq .

素材上傳走同一個 API:

curl -X POST "https://api.canva.com/rest/v1/asset-uploads" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/octet-stream" \
  -H 'Asset-Upload-Metadata: {"name": "my-image.png"}' \
  --data-binary @image.png

官方還給了三個組合工作流:Instagram 帖子(列模板 → autofill → 導出 1080×1080 PNG → 下載)、輪播圖(多次 autofill 生成多張 → 逐張導出 PNG)、批量導出(列全部設計 → 循環發起導出 → 下載所有文件)。

適用場景與注意

適合:需要在 Agent 流程或 CI 裏批量產出社媒圖、輪播圖,且設計規範已沉澱在 Canva 品牌模板裏的團隊。前提是能自建 Canva Integration。

限制與坑:

  • 需要的 scope 包括 design:content:read/write、asset:read/write、brandtemplate:content:read,缺權限會報 403
  • 導出是異步任務,要輪詢,不能發完就當完成
  • 速率限制:多數接口 100 次/分鐘,上傳和導出 30 次/分鐘,批量操作需自行節流
  • 常見錯誤:401 token 過期需刷新、429 觸發限流、404 設計或模板不存在
  • 官方建議:優先用品牌模板而非從零創建;緩存常用模板 ID;批量導出分組執行以避開限流

License 爲 MIT-0。Skill 頁面簡介同時聲明:內容由 AI 輔助生成,僅供參考,決策與落地由使用者自行負責。

結尾

這個 Skill 的價值在於把 Canva 的建設計、填內容、導出、素材管理收斂成一套帶現成 curl 示例的 API 操作清單,適合做社媒內容批量生產的 Agent。官方地址:https://api.skillhub.cn/zechuan-zhuchuang/canva。

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

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

小夜