mcpField
C
canva-automation

canva-automation

github.com/davepoon设计与 UI3.7k140 次安装1 天前更新
代码仓库

关于 canva-automation

canva-automation 是一项通过 Composio 的 Canva 工具包和 Rube MCP 自动处理 Canva 设计工作的技能,涵盖设计浏览与创建、素材上传、导出、文件夹整理及品牌模板填充。

主要功能

  1. 01浏览和搜索设计
  2. 02从头或基于模板创建设计
  3. 03异步上传素材
  4. 04以多种格式导出设计
  5. 05将设计整理到文件夹
  6. 06自动填充品牌模板

适用场景

  1. 01查找 Canva 资料库中的设计
  2. 02创建演示文稿或海报
  3. 03将设计导出为 PDF 或 PNG
  4. 04根据品牌模板生成设计

MCP 相关

通过 Rube MCP 访问 Composio 的 Canva 工具包。运行工作流前,说明要求先检查当前工具架构并连接 Canva 账户。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/davepoon/buildwithclaude --skill canva-automation

安装后在 Claude Code 中输入/canva-automation确认已加载。

详细介绍

通过 Rube MCP 实现 Canva 自动化

通过 Rube MCP 使用 Composio 的 Canva 工具包自动执行 Canva 设计操作。

工具包文档:composio.dev/toolkits/canva

前提条件

  • 必须已连接 Rube MCP(可用 RUBE_SEARCH_TOOLS)
  • 通过 RUBE_MANAGE_CONNECTIONS 启用有效的 Canva 连接,并指定工具包 canva
  • 务必先调用 RUBE_SEARCH_TOOLS,以获取当前工具架构

设置

获取 Rube MCP:在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务。无需 API 密钥,只需添加此端点即可使用。

  1. 确认 RUBE_SEARCH_TOOLS 有响应,以验证 Rube MCP 可用
  2. 调用 RUBE_MANAGE_CONNECTIONS,并指定工具包 canva
  3. 如果连接状态不是 ACTIVE,请根据返回的授权链接完成 Canva OAuth
  4. 确认连接状态显示为 ACTIVE 后,再运行任何工作流

核心工作流

1. 列出和浏览设计

适用场景:用户想查找现有设计或浏览其 Canva 资源库

工具调用顺序:

  1. CANVA_LIST_USER_DESIGNS - 列出所有设计,可选择性地应用筛选条件[必需]

关键参数:

  • query:按名称筛选设计的搜索词
  • continuation:上一条响应中的分页令牌
  • ownership:按“owned”“shared”或“any”筛选
  • sort_by:排序字段(例如,“modified_at”“title”)

注意事项:

  • 结果采用分页形式;持续使用 continuation 令牌,直到该令牌不再出现
  • 已删除的设计可能仍会短暂显示;请检查设计状态
  • 搜索采用子字符串匹配,而非模糊匹配
2. 创建和设计

适用场景:用户想从头开始或使用模板创建新的 Canva 设计

工具调用顺序:

  1. CANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST - 浏览可用的品牌模板[可选]
  2. CANVA_CREATE_CANVA_DESIGN_WITH_OPTIONAL_ASSET - 创建新设计[必需]

关键参数:

  • design_type:设计类型(例如,“Presentation”“Poster”“SocialMedia”)
  • title:新设计的名称
  • asset_id:要在设计中加入的可选资源
  • width / height:以像素为单位的自定义尺寸

注意事项:

  • 设计类型必须与 Canva 预定义的类型完全一致
  • 自定义尺寸有最大值和最小值限制
  • 引用资源前,必须先通过 CANVA_CREATE_ASSET_UPLOAD_JOB 上传该资源
3. 上传资源

适用场景:用户想将图像或文件上传到 Canva,以便在设计中使用

工具调用顺序:

  1. CANVA_CREATE_ASSET_UPLOAD_JOB - 发起资源上传[必需]
  2. CANVA_FETCH_ASSET_UPLOAD_JOB_STATUS - 持续轮询,直到上传完成[必需]

关键参数:

  • name:资源的显示名称
  • url:要上传文件的公开 URL(用于基于 URL 的上传)
  • job_id:第 1 步返回的上传任务 ID(用于轮询状态)

注意事项:

  • 上传为异步操作;必须持续轮询任务状态,直到操作完成
  • 支持的格式包括 PNG、JPG、SVG、MP4、GIF
  • 文件大小有限制;较大的文件可能需要更长的处理时间
  • CREATE 返回的 job_id 是轮询状态所需的 ID
  • 状态值:“in_progress”“success”“failed”
4. 导出设计

适用场景:用户想将 Canva 设计下载或导出为 PDF、PNG 或其他格式

工具调用顺序:

  1. CANVA_LIST_USER_DESIGNS - 查找要导出的设计 [前置条件]
  2. CANVA_CREATE_CANVA_DESIGN_EXPORT_JOB - 启动导出流程 [必需]
  3. CANVA_GET_DESIGN_EXPORT_JOB_RESULT - 轮询直至导出完成并获取下载 URL [必需]

关键参数:

  • design_id:要导出的设计 ID
  • format:导出格式('pdf'、'png'、'jpg'、'svg'、'mp4'、'gif'、'pptx')
  • pages:要导出的特定页码(数组)
  • quality:导出质量('regular'、'high')
  • job_id:用于轮询状态的导出任务 ID

注意事项:

  • 导出是异步的;必须轮询任务结果,直至任务完成
  • 已完成导出的下载 URL 会在一段时间后过期
  • 页数较多的大型设计需要更长时间导出
  • 并非所有格式都支持所有设计类型(例如,MP4 仅适用于动画)
  • 轮询间隔:每次检查状态之间等待 2-3 秒
5. 使用文件夹整理

适用场景:用户想创建文件夹或将设计整理到文件夹中

工具调用顺序:

  1. CANVA_POST_FOLDERS - 创建新文件夹 [必需]
  2. CANVA_MOVE_ITEM_TO_SPECIFIED_FOLDER - 将设计移入文件夹 [可选]

关键参数:

  • name:文件夹名称
  • parent_folder_id:用于嵌套整理的父文件夹
  • item_id:要移动的设计或素材 ID
  • folder_id:目标文件夹 ID

注意事项:

  • 同一父文件夹中的文件夹名称必须唯一
  • 在文件夹之间移动项目会立即更新其位置
  • 根级文件夹没有 parent_folder_id
6. 使用品牌模板自动填充

适用场景:用户想通过向品牌模板占位符填入数据来生成设计

工具调用顺序:

  1. CANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST - 列出可用的品牌模板 [必需]
  2. CANVA_INITIATE_CANVA_DESIGN_AUTOFILL_JOB - 使用数据启动自动填充 [必需]

关键参数:

  • brand_template_id:要使用的品牌模板 ID
  • title:生成的设计标题
  • data:占位符名称到替换值的键值映射

注意事项:

  • 模板占位符必须完全匹配(区分大小写)
  • 自动填充是异步的;请轮询直至完成
  • 只有品牌模板支持自动填充,普通设计不支持
  • 数据值必须与每个占位符的预期类型相符(文本、图片 URL)

常见模式

异步任务模式

许多 Canva 操作都是异步的:

1. Initiate job (upload, export, autofill) -> get job_id
2. Poll status endpoint with job_id every 2-3 seconds
3. Check for 'success' or 'failed' status
4. On success, extract result (asset_id, download_url, design_id)
ID 解析

设计名称 -> 设计 ID:

1. Call CANVA_LIST_USER_DESIGNS with query=design_name
2. Find matching design in results
3. Extract id field

品牌模板名称 -> 模板 ID:

1. Call CANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST
2. Find template by name
3. Extract brand_template_id
分页
  • 检查响应中的 continuation 令牌
  • 在下一个请求的 continuation 参数中传入该令牌
  • 持续请求,直到 continuation 缺失或为空

已知注意事项

异步操作:

  • 上传、导出和自动填充都是异步的
  • 始终轮询任务状态;不要假定任务会立即完成
  • 导出的下载 URL 会过期;请及时使用

素材管理:

  • 素材必须先上传,才能在设计中使用
  • 上传任务必须达到 'success' 状态后,asset_id 才有效
  • 支持的格式各不相同;请查看 Canva 文档,了解当前限制

速率限制:

  • Canva API 对每个端点都有速率限制
  • 对批量操作实施指数退避
  • 尽可能批量处理操作,以减少 API 调用

响应解析:

  • 响应数据可能嵌套在 data 键下
  • 任务状态响应会根据完成状态包含不同字段
  • 采用防御性解析,并为可选字段设置回退值

Quick Reference

TaskTool SlugKey Params
List designsCANVA_LIST_USER_DESIGNSquery, continuation
Create designCANVA_CREATE_CANVA_DESIGN_WITH_OPTIONAL_ASSETdesign_type, title
Upload assetCANVA_CREATE_ASSET_UPLOAD_JOBname, url
Check uploadCANVA_FETCH_ASSET_UPLOAD_JOB_STATUSjob_id
Export designCANVA_CREATE_CANVA_DESIGN_EXPORT_JOBdesign_id, format
Get exportCANVA_GET_DESIGN_EXPORT_JOB_RESULTjob_id
Create folderCANVA_POST_FOLDERSname, parent_folder_id
Move to folderCANVA_MOVE_ITEM_TO_SPECIFIED_FOLDERitem_id, folder_id
List templatesCANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST(none)
Autofill templateCANVA_INITIATE_CANVA_DESIGN_AUTOFILL_JOBbrand_template_id, data

Powered by Composio

评论

支持 Markdown