{
  "schemaVersion": "1.0",
  "item": {
    "slug": "canva-automation",
    "name": "Canva Automation",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/sohamganatra/canva-automation",
    "canonicalUrl": "https://clawhub.ai/sohamganatra/canva-automation",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/canva-automation",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=canva-automation",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/canva-automation"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/canva-automation",
    "agentPageUrl": "https://openagent3.xyz/skills/canva-automation/agent",
    "manifestUrl": "https://openagent3.xyz/skills/canva-automation/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/canva-automation/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Canva Automation via Rube MCP",
        "body": "Automate Canva design operations through Composio's Canva toolkit via Rube MCP."
      },
      {
        "title": "Prerequisites",
        "body": "Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\nActive Canva connection via RUBE_MANAGE_CONNECTIONS with toolkit canva\nAlways call RUBE_SEARCH_TOOLS first to get current tool schemas"
      },
      {
        "title": "Setup",
        "body": "Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\nVerify Rube MCP is available by confirming RUBE_SEARCH_TOOLS responds\nCall RUBE_MANAGE_CONNECTIONS with toolkit canva\nIf connection is not ACTIVE, follow the returned auth link to complete Canva OAuth\nConfirm connection status shows ACTIVE before running any workflows"
      },
      {
        "title": "1. List and Browse Designs",
        "body": "When to use: User wants to find existing designs or browse their Canva library\n\nTool sequence:\n\nCANVA_LIST_USER_DESIGNS - List all designs with optional filters [Required]\n\nKey parameters:\n\nquery: Search term to filter designs by name\ncontinuation: Pagination token from previous response\nownership: Filter by 'owned', 'shared', or 'any'\nsort_by: Sort field (e.g., 'modified_at', 'title')\n\nPitfalls:\n\nResults are paginated; follow continuation token until absent\nDeleted designs may still appear briefly; check design status\nSearch is substring-based, not fuzzy matching"
      },
      {
        "title": "2. Create and Design",
        "body": "When to use: User wants to create a new Canva design from scratch or from a template\n\nTool sequence:\n\nCANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST - Browse available brand templates [Optional]\nCANVA_CREATE_CANVA_DESIGN_WITH_OPTIONAL_ASSET - Create a new design [Required]\n\nKey parameters:\n\ndesign_type: Type of design (e.g., 'Presentation', 'Poster', 'SocialMedia')\ntitle: Name for the new design\nasset_id: Optional asset to include in the design\nwidth / height: Custom dimensions in pixels\n\nPitfalls:\n\nDesign type must match Canva's predefined types exactly\nCustom dimensions have minimum and maximum limits\nAsset must be uploaded first via CANVA_CREATE_ASSET_UPLOAD_JOB before referencing"
      },
      {
        "title": "3. Upload Assets",
        "body": "When to use: User wants to upload images or files to Canva for use in designs\n\nTool sequence:\n\nCANVA_CREATE_ASSET_UPLOAD_JOB - Initiate the asset upload [Required]\nCANVA_FETCH_ASSET_UPLOAD_JOB_STATUS - Poll until upload completes [Required]\n\nKey parameters:\n\nname: Display name for the asset\nurl: Public URL of the file to upload (for URL-based uploads)\njob_id: Upload job ID returned from step 1 (for status polling)\n\nPitfalls:\n\nUpload is asynchronous; you MUST poll the job status until it completes\nSupported formats include PNG, JPG, SVG, MP4, GIF\nFile size limits apply; large files may take longer to process\nThe job_id from CREATE returns the ID needed for status polling\nStatus values: 'in_progress', 'success', 'failed'"
      },
      {
        "title": "4. Export Designs",
        "body": "When to use: User wants to download or export a Canva design as PDF, PNG, or other format\n\nTool sequence:\n\nCANVA_LIST_USER_DESIGNS - Find the design to export [Prerequisite]\nCANVA_CREATE_CANVA_DESIGN_EXPORT_JOB - Start the export process [Required]\nCANVA_GET_DESIGN_EXPORT_JOB_RESULT - Poll until export completes and get download URL [Required]\n\nKey parameters:\n\ndesign_id: ID of the design to export\nformat: Export format ('pdf', 'png', 'jpg', 'svg', 'mp4', 'gif', 'pptx')\npages: Specific page numbers to export (array)\nquality: Export quality ('regular', 'high')\njob_id: Export job ID for polling status\n\nPitfalls:\n\nExport is asynchronous; you MUST poll the job result until it completes\nDownload URLs from completed exports expire after a limited time\nLarge designs with many pages take longer to export\nNot all formats support all design types (e.g., MP4 only for animations)\nPoll interval: wait 2-3 seconds between status checks"
      },
      {
        "title": "5. Organize with Folders",
        "body": "When to use: User wants to create folders or organize designs into folders\n\nTool sequence:\n\nCANVA_POST_FOLDERS - Create a new folder [Required]\nCANVA_MOVE_ITEM_TO_SPECIFIED_FOLDER - Move designs into folders [Optional]\n\nKey parameters:\n\nname: Folder name\nparent_folder_id: Parent folder for nested organization\nitem_id: ID of the design or asset to move\nfolder_id: Target folder ID\n\nPitfalls:\n\nFolder names must be unique within the same parent folder\nMoving items between folders updates their location immediately\nRoot-level folders have no parent_folder_id"
      },
      {
        "title": "6. Autofill from Brand Templates",
        "body": "When to use: User wants to generate designs by filling brand template placeholders with data\n\nTool sequence:\n\nCANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST - List available brand templates [Required]\nCANVA_INITIATE_CANVA_DESIGN_AUTOFILL_JOB - Start autofill with data [Required]\n\nKey parameters:\n\nbrand_template_id: ID of the brand template to use\ntitle: Title for the generated design\ndata: Key-value mapping of placeholder names to replacement values\n\nPitfalls:\n\nTemplate placeholders must match exactly (case-sensitive)\nAutofill is asynchronous; poll for completion\nOnly brand templates support autofill, not regular designs\nData values must match the expected type for each placeholder (text, image URL)"
      },
      {
        "title": "Async Job Pattern",
        "body": "Many Canva operations are asynchronous:\n\n1. Initiate job (upload, export, autofill) -> get job_id\n2. Poll status endpoint with job_id every 2-3 seconds\n3. Check for 'success' or 'failed' status\n4. On success, extract result (asset_id, download_url, design_id)"
      },
      {
        "title": "ID Resolution",
        "body": "Design name -> Design ID:\n\n1. Call CANVA_LIST_USER_DESIGNS with query=design_name\n2. Find matching design in results\n3. Extract id field\n\nBrand template name -> Template ID:\n\n1. Call CANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST\n2. Find template by name\n3. Extract brand_template_id"
      },
      {
        "title": "Pagination",
        "body": "Check response for continuation token\nPass token in next request's continuation parameter\nContinue until continuation is absent or empty"
      },
      {
        "title": "Known Pitfalls",
        "body": "Async Operations:\n\nUploads, exports, and autofills are all asynchronous\nAlways poll job status; do not assume immediate completion\nDownload URLs from exports expire; use them promptly\n\nAsset Management:\n\nAssets must be uploaded before they can be used in designs\nUpload job must reach 'success' status before the asset_id is valid\nSupported formats vary; check Canva documentation for current limits\n\nRate Limits:\n\nCanva API has rate limits per endpoint\nImplement exponential backoff for bulk operations\nBatch operations where possible to reduce API calls\n\nResponse Parsing:\n\nResponse data may be nested under data key\nJob status responses include different fields based on completion state\nParse defensively with fallbacks for optional fields"
      },
      {
        "title": "Quick Reference",
        "body": "TaskTool SlugKey ParamsList designsCANVA_LIST_USER_DESIGNSquery, continuationCreate designCANVA_CREATE_CANVA_DESIGN_WITH_OPTIONAL_ASSETdesign_type, titleUpload assetCANVA_CREATE_ASSET_UPLOAD_JOBname, urlCheck uploadCANVA_FETCH_ASSET_UPLOAD_JOB_STATUSjob_idExport designCANVA_CREATE_CANVA_DESIGN_EXPORT_JOBdesign_id, formatGet exportCANVA_GET_DESIGN_EXPORT_JOB_RESULTjob_idCreate folderCANVA_POST_FOLDERSname, parent_folder_idMove to folderCANVA_MOVE_ITEM_TO_SPECIFIED_FOLDERitem_id, folder_idList templatesCANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST(none)Autofill templateCANVA_INITIATE_CANVA_DESIGN_AUTOFILL_JOBbrand_template_id, data"
      }
    ],
    "body": "Canva Automation via Rube MCP\n\nAutomate Canva design operations through Composio's Canva toolkit via Rube MCP.\n\nPrerequisites\nRube MCP must be connected (RUBE_SEARCH_TOOLS available)\nActive Canva connection via RUBE_MANAGE_CONNECTIONS with toolkit canva\nAlways call RUBE_SEARCH_TOOLS first to get current tool schemas\nSetup\n\nGet Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\nVerify Rube MCP is available by confirming RUBE_SEARCH_TOOLS responds\nCall RUBE_MANAGE_CONNECTIONS with toolkit canva\nIf connection is not ACTIVE, follow the returned auth link to complete Canva OAuth\nConfirm connection status shows ACTIVE before running any workflows\nCore Workflows\n1. List and Browse Designs\n\nWhen to use: User wants to find existing designs or browse their Canva library\n\nTool sequence:\n\nCANVA_LIST_USER_DESIGNS - List all designs with optional filters [Required]\n\nKey parameters:\n\nquery: Search term to filter designs by name\ncontinuation: Pagination token from previous response\nownership: Filter by 'owned', 'shared', or 'any'\nsort_by: Sort field (e.g., 'modified_at', 'title')\n\nPitfalls:\n\nResults are paginated; follow continuation token until absent\nDeleted designs may still appear briefly; check design status\nSearch is substring-based, not fuzzy matching\n2. Create and Design\n\nWhen to use: User wants to create a new Canva design from scratch or from a template\n\nTool sequence:\n\nCANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST - Browse available brand templates [Optional]\nCANVA_CREATE_CANVA_DESIGN_WITH_OPTIONAL_ASSET - Create a new design [Required]\n\nKey parameters:\n\ndesign_type: Type of design (e.g., 'Presentation', 'Poster', 'SocialMedia')\ntitle: Name for the new design\nasset_id: Optional asset to include in the design\nwidth / height: Custom dimensions in pixels\n\nPitfalls:\n\nDesign type must match Canva's predefined types exactly\nCustom dimensions have minimum and maximum limits\nAsset must be uploaded first via CANVA_CREATE_ASSET_UPLOAD_JOB before referencing\n3. Upload Assets\n\nWhen to use: User wants to upload images or files to Canva for use in designs\n\nTool sequence:\n\nCANVA_CREATE_ASSET_UPLOAD_JOB - Initiate the asset upload [Required]\nCANVA_FETCH_ASSET_UPLOAD_JOB_STATUS - Poll until upload completes [Required]\n\nKey parameters:\n\nname: Display name for the asset\nurl: Public URL of the file to upload (for URL-based uploads)\njob_id: Upload job ID returned from step 1 (for status polling)\n\nPitfalls:\n\nUpload is asynchronous; you MUST poll the job status until it completes\nSupported formats include PNG, JPG, SVG, MP4, GIF\nFile size limits apply; large files may take longer to process\nThe job_id from CREATE returns the ID needed for status polling\nStatus values: 'in_progress', 'success', 'failed'\n4. Export Designs\n\nWhen to use: User wants to download or export a Canva design as PDF, PNG, or other format\n\nTool sequence:\n\nCANVA_LIST_USER_DESIGNS - Find the design to export [Prerequisite]\nCANVA_CREATE_CANVA_DESIGN_EXPORT_JOB - Start the export process [Required]\nCANVA_GET_DESIGN_EXPORT_JOB_RESULT - Poll until export completes and get download URL [Required]\n\nKey parameters:\n\ndesign_id: ID of the design to export\nformat: Export format ('pdf', 'png', 'jpg', 'svg', 'mp4', 'gif', 'pptx')\npages: Specific page numbers to export (array)\nquality: Export quality ('regular', 'high')\njob_id: Export job ID for polling status\n\nPitfalls:\n\nExport is asynchronous; you MUST poll the job result until it completes\nDownload URLs from completed exports expire after a limited time\nLarge designs with many pages take longer to export\nNot all formats support all design types (e.g., MP4 only for animations)\nPoll interval: wait 2-3 seconds between status checks\n5. Organize with Folders\n\nWhen to use: User wants to create folders or organize designs into folders\n\nTool sequence:\n\nCANVA_POST_FOLDERS - Create a new folder [Required]\nCANVA_MOVE_ITEM_TO_SPECIFIED_FOLDER - Move designs into folders [Optional]\n\nKey parameters:\n\nname: Folder name\nparent_folder_id: Parent folder for nested organization\nitem_id: ID of the design or asset to move\nfolder_id: Target folder ID\n\nPitfalls:\n\nFolder names must be unique within the same parent folder\nMoving items between folders updates their location immediately\nRoot-level folders have no parent_folder_id\n6. Autofill from Brand Templates\n\nWhen to use: User wants to generate designs by filling brand template placeholders with data\n\nTool sequence:\n\nCANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST - List available brand templates [Required]\nCANVA_INITIATE_CANVA_DESIGN_AUTOFILL_JOB - Start autofill with data [Required]\n\nKey parameters:\n\nbrand_template_id: ID of the brand template to use\ntitle: Title for the generated design\ndata: Key-value mapping of placeholder names to replacement values\n\nPitfalls:\n\nTemplate placeholders must match exactly (case-sensitive)\nAutofill is asynchronous; poll for completion\nOnly brand templates support autofill, not regular designs\nData values must match the expected type for each placeholder (text, image URL)\nCommon Patterns\nAsync Job Pattern\n\nMany Canva operations are asynchronous:\n\n1. Initiate job (upload, export, autofill) -> get job_id\n2. Poll status endpoint with job_id every 2-3 seconds\n3. Check for 'success' or 'failed' status\n4. On success, extract result (asset_id, download_url, design_id)\n\nID Resolution\n\nDesign name -> Design ID:\n\n1. Call CANVA_LIST_USER_DESIGNS with query=design_name\n2. Find matching design in results\n3. Extract id field\n\n\nBrand template name -> Template ID:\n\n1. Call CANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST\n2. Find template by name\n3. Extract brand_template_id\n\nPagination\nCheck response for continuation token\nPass token in next request's continuation parameter\nContinue until continuation is absent or empty\nKnown Pitfalls\n\nAsync Operations:\n\nUploads, exports, and autofills are all asynchronous\nAlways poll job status; do not assume immediate completion\nDownload URLs from exports expire; use them promptly\n\nAsset Management:\n\nAssets must be uploaded before they can be used in designs\nUpload job must reach 'success' status before the asset_id is valid\nSupported formats vary; check Canva documentation for current limits\n\nRate Limits:\n\nCanva API has rate limits per endpoint\nImplement exponential backoff for bulk operations\nBatch operations where possible to reduce API calls\n\nResponse Parsing:\n\nResponse data may be nested under data key\nJob status responses include different fields based on completion state\nParse defensively with fallbacks for optional fields\nQuick Reference\nTask\tTool Slug\tKey Params\nList designs\tCANVA_LIST_USER_DESIGNS\tquery, continuation\nCreate design\tCANVA_CREATE_CANVA_DESIGN_WITH_OPTIONAL_ASSET\tdesign_type, title\nUpload asset\tCANVA_CREATE_ASSET_UPLOAD_JOB\tname, url\nCheck upload\tCANVA_FETCH_ASSET_UPLOAD_JOB_STATUS\tjob_id\nExport design\tCANVA_CREATE_CANVA_DESIGN_EXPORT_JOB\tdesign_id, format\nGet export\tCANVA_GET_DESIGN_EXPORT_JOB_RESULT\tjob_id\nCreate folder\tCANVA_POST_FOLDERS\tname, parent_folder_id\nMove to folder\tCANVA_MOVE_ITEM_TO_SPECIFIED_FOLDER\titem_id, folder_id\nList templates\tCANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST\t(none)\nAutofill template\tCANVA_INITIATE_CANVA_DESIGN_AUTOFILL_JOB\tbrand_template_id, data"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/sohamganatra/canva-automation",
    "publisherUrl": "https://clawhub.ai/sohamganatra/canva-automation",
    "owner": "sohamganatra",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/canva-automation",
    "downloadUrl": "https://openagent3.xyz/downloads/canva-automation",
    "agentUrl": "https://openagent3.xyz/skills/canva-automation/agent",
    "manifestUrl": "https://openagent3.xyz/skills/canva-automation/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/canva-automation/agent.md"
  }
}