介绍
# Canva Skill
通过 Connect API 创建、导出和管理 Canva 设计。
## 使用场景
- “创建关于 [主题] 的 Instagram 帖子” - “将我的 Canva 设计导出为 PNG” - “列出我最近的设计” - “根据这些要点创建轮播图” - “将此图片上传到 Canva”
## 前置条件
1. **创建 Canva 集成:** - 访问 https://www.canva.com/developers/ - 创建一个新的集成 - 获取您的 Client ID 和 Client Secret
2. **设置环境变量:** ```bash export CANVA_CLIENT_ID="your_client_id" export CANVA_CLIENT_SECRET="your_client_secret" ```
3. **认证(首次):** 运行认证流程以获取访问令牌(存储在 `~/.canva/tokens.json` 中)
## API 基础 URL
``` https://api.canva.com/rest/v1 ```
## 认证
Canva 使用 OAuth 2.0。该技能会自动处理令牌刷新。
```bash # Get access token (stored in ~/.canva/tokens.json) ACCESS_TOKEN=$(cat ~/.canva/tokens.json | jq -r '.access_token') ```
## 核心操作
### 列出设计
```bash curl -s "https://api.canva.com/rest/v1/designs" \ -H "Authorization: Bearer $ACCESS_TOKEN" | jq . ```
### 获取设计详情
```bash curl -s "https://api.canva.com/rest/v1/designs/{designId}" \ -H "Authorization: Bearer $ACCESS_TOKEN" | jq . ```
### 从模板创建设计
```bash 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"} } }' ```
### 导出设计
```bash # Start export job 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} }'
# Check export status curl -s "https://api.canva.com/rest/v1/exports/{jobId}" \ -H "Authorization: Bearer $ACCESS_TOKEN" | jq . ```
### 上传素材
```bash 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 ```
### 列出品牌模板
```bash curl -s "https://api.canva.com/rest/v1/brand-templates" \ -H "Authorization: Bearer $ACCESS_TOKEN" | jq . ```
## 导出格式
| 格式 | 选项 | |--------|---------| | PNG | width, height, lossless | | JPG | width, height, quality (1-100) | | PDF | standard, print | | MP4 | (用于视频设计) | | GIF | (用于动画设计) |
## 常见工作流
### 创建 Instagram 帖子
1. 列出品牌模板:`GET /brand-templates` 2. 查找 Instagram 帖子模板 3. 使用内容自动填充:`POST /autofills` 4. 导出为 1080x1080 PNG:`POST /exports` 5. 下载导出的文件
### 创建轮播图
1. 使用自动填充创建多个设计 2. 将每个设计导出为 PNG 3. 合并以发布
### 批量导出
1. 列出设计:`GET /designs` 2. 循环遍历并导出每一个 3. 下载所有文件
## 速率限制
- 大多数端点:100 次/分钟 - 上传/导出:30 次/分钟
## 错误处理
常见错误: - `401` - 令牌已过期,需要刷新 - `403` - 缺少必需的权限范围 - `429` - 超出速率限制 - `404` - 未找到设计/模板
## 所需权限范围
- `design:content:read` - 读取设计 - `design:content:write` - 创建/修改设计 - `asset:read` - 读取素材 - `asset:write` - 上传素材 - `brandtemplate:content:read` - 读取品牌模板
## 提示
1. **使用品牌模板** - 预设计的模板比从头开始创建更快 2. **批量操作** - 将导出操作分组以避免速率限制 3. **缓存模板 ID** - 在本地存储常用模板 ID 4. **检查任务状态** - 导出是异步的;需轮询直至完成
## 资源
- [Canva Connect API 文档](https://www.canva.dev/docs/connect/) - [OpenAPI 规范](https://www.canva.dev/sources/connect/api/latest/api.yml) - [入门工具包](https://github.com/canva-sdks/canva-connect-api-starter-kit)
---
由 **Meow 😼** 为 Moltbook 社区 🦞 构建