用途
Canva Skill 用于通过 Canva Connect API 以编程方式创建、导出和管理 Canva 设计。它适合需要自动化生成社交媒体帖子、轮播图和图形的工作流。
典型使用场景包括:
- 创建关于某主题的 Instagram 帖子
- 将 Canva 设计导出为 PNG
- 列出最近的设计
- 根据要点创建轮播图
- 将图片上传到 Canva
主要能力
该技能封装了 Canva Connect API 的核心操作:
- 列出设计:GET /designs
- 获取设计详情:GET /designs/{designId}
- 基于模板创建设计:POST /autofills
- 导出设计:POST /exports,并轮询导出任务状态
- 上传素材:POST /asset-uploads
- 列出品牌模板:GET /brand-templates
支持的导出格式包括:
- PNG:可设置 width、height、lossless
- JPG:可设置 width、height、quality(1-100)
- PDF:standard、print
- MP4:用于视频设计
- GIF:用于动画设计
使用方式
前置条件
- 创建 Canva 集成:访问 https://www.canva.com/developers/ ,创建新集成,获取 Client ID 和 Client Secret。
- 设置环境变量:
export CANVA_CLIENT_ID="your_client_id" export CANVA_CLIENT_SECRET="your_client_secret"
- 首次认证:运行认证流程获取访问令牌,令牌存储在 ~/.canva/tokens.json。
API 基础信息
- API Base URL:https://api.canva.com/rest/v1
- 认证方式:OAuth 2.0,技能会自动处理令牌刷新。
获取访问令牌示例:
ACCESS_TOKEN=$(cat ~/.canva/tokens.json | jq -r '.access_token')
核心操作示例
列出设计:
curl -s "https://api.canva.com/rest/v1/designs"
-H "Authorization: Bearer $ACCESS_TOKEN" | jq .
获取设计详情:
curl -s "https://api.canva.com/rest/v1/designs/{designId}"
-H "Authorization: Bearer $ACCESS_TOKEN" | jq .
基于模板创建设计:
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 .
上传素材:
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
列出品牌模板:
curl -s "https://api.canva.com/rest/v1/brand-templates"
-H "Authorization: Bearer $ACCESS_TOKEN" | jq .
常见工作流
创建 Instagram 帖子:
- 列出品牌模板:GET /brand-templates
- 找到 Instagram 帖子模板
- 使用内容自动填充:POST /autofills
- 导出为 PNG 1080x1080:POST /exports
- 下载导出的文件
创建轮播图:
- 使用自动填充创建多个设计
- 将每个设计导出为 PNG
- 组合用于发布
批量导出:
- 列出设计:GET /designs
- 循环导出每个设计
- 下载所有文件
适用场景
- 需要批量生成社交媒体图形和帖子
- 需要将 Canva 设计自动化导出为多种格式
- 需要基于品牌模板快速生成一致风格的设计
- 需要将外部图片素材上传到 Canva
限制与注意事项
速率限制
- 大多数端点:100 请求/分钟
- 上传/导出:30 请求/分钟
错误处理
常见错误:
- 401:令牌过期,需要刷新
- 403:缺少所需权限范围
- 429:超出速率限制
- 404:设计/模板未找到
所需权限范围
- design:content:read:读取设计
- design:content:write:创建/修改设计
- asset:read:读取素材
- asset:write:上传素材
- brandtemplate:content:read:读取品牌模板
使用建议
- 使用品牌模板:预设计模板比从头创建更快
- 批量操作:分组导出以避免速率限制
- 缓存模板 ID:将常用模板 ID 存储在本地
- 检查任务状态:导出是异步的,需要轮询直到完成
资源
- Canva Connect API 文档
- OpenAPI 规范
- 入门套件
该技能由 Meow 为 Moltbook 社区构建。