{
  "schemaVersion": "1.0",
  "item": {
    "slug": "canva-connect",
    "name": "Canva Connect",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/coolmanns/canva-connect",
    "canonicalUrl": "https://clawhub.ai/coolmanns/canva-connect",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/canva-connect",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=canva-connect",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/api.md",
      "scripts/canva.sh"
    ],
    "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-connect"
    },
    "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-connect",
    "agentPageUrl": "https://openagent3.xyz/skills/canva-connect/agent",
    "manifestUrl": "https://openagent3.xyz/skills/canva-connect/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/canva-connect/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 Connect",
        "body": "Manage Canva designs, assets, and folders via the Connect API."
      },
      {
        "title": "What This Skill Does (and Doesn't Do)",
        "body": "✅ CAN DO❌ CANNOT DOList/search designsAdd content to designsCreate blank designsEdit existing design contentExport designs (PNG/PDF/JPG)Upload documents (images only)Create/manage foldersAI design generationMove items between foldersUpload images as assetsAutofill brand templates"
      },
      {
        "title": "Realistic Use Cases",
        "body": "1. Asset Pipeline 🖼️\n\nGenerate diagram → upload to Canva → organize in project folder\n\n2. Export Automation 📤\n\nDesign finished in Canva → export via CLI → use in docs/website\n\n3. Design Organization 📁\n\nCreate project folders → move related designs → keep Canva tidy\n\n4. Brand Template Autofill 📋\n\nSet up template in Canva → pass data via API → get personalized output"
      },
      {
        "title": "Quick Start",
        "body": "# Authenticate (opens browser for OAuth)\n{baseDir}/scripts/canva.sh auth\n\n# List your designs\n{baseDir}/scripts/canva.sh designs list\n\n# Create a new design\n{baseDir}/scripts/canva.sh designs create --type doc --title \"My Document\"\n\n# Export a design\n{baseDir}/scripts/canva.sh export <design_id> --format pdf"
      },
      {
        "title": "1. Create Canva Integration",
        "body": "Go to canva.com/developers/integrations\nClick Create an integration\nSet scopes:\n\ndesign:content (Read + Write)\ndesign:meta (Read)\nasset (Read + Write)\nbrandtemplate:meta (Read)\nbrandtemplate:content (Read)\nprofile (Read)\n\n\nSet OAuth redirect: http://127.0.0.1:3001/oauth/redirect\nNote Client ID and generate Client Secret"
      },
      {
        "title": "2. Configure Environment",
        "body": "Add to ~/.clawdbot/clawdbot.json under skills.entries:\n\n{\n  \"skills\": {\n    \"entries\": {\n      \"canva\": {\n        \"clientId\": \"YOUR_CLIENT_ID\",\n        \"clientSecret\": \"YOUR_CLIENT_SECRET\"\n      }\n    }\n  }\n}\n\nOr set environment variables:\n\nexport CANVA_CLIENT_ID=\"your_client_id\"\nexport CANVA_CLIENT_SECRET=\"your_client_secret\""
      },
      {
        "title": "3. Authenticate",
        "body": "{baseDir}/scripts/canva.sh auth\n\nOpens browser for OAuth consent. Tokens stored in ~/.clawdbot/canva-tokens.json."
      },
      {
        "title": "Authentication",
        "body": "CommandDescriptionauthStart OAuth flow (opens browser)auth statusCheck authentication statusauth logoutClear stored tokens"
      },
      {
        "title": "Designs",
        "body": "CommandDescriptiondesigns list [--limit N]List your designsdesigns get <id>Get design detailsdesigns create --type <type> --title <title>Create new designdesigns delete <id>Move design to trash\n\nDesign types: doc, presentation, whiteboard, poster, instagram_post, facebook_post, video, logo, flyer, banner"
      },
      {
        "title": "Export",
        "body": "CommandDescriptionexport <design_id> --format <fmt>Export designexport status <job_id>Check export job status\n\nFormats: pdf, png, jpg, gif, pptx, mp4"
      },
      {
        "title": "Assets",
        "body": "CommandDescriptionassets listList uploaded assetsassets upload <file> [--name <name>]Upload assetassets get <id>Get asset detailsassets delete <id>Delete asset"
      },
      {
        "title": "Brand Templates",
        "body": "CommandDescriptiontemplates listList brand templatestemplates get <id>Get template detailsautofill <template_id> --data <json>Autofill template with data"
      },
      {
        "title": "Folders",
        "body": "CommandDescriptionfolders listList foldersfolders create <name>Create folderfolders get <id>Get folder contents"
      },
      {
        "title": "User",
        "body": "CommandDescriptionmeGet current user profile"
      },
      {
        "title": "Create and Export a Poster",
        "body": "# Create\n{baseDir}/scripts/canva.sh designs create --type poster --title \"Event Poster\"\n\n# Export as PNG\n{baseDir}/scripts/canva.sh export DAF... --format png --output ./poster.png"
      },
      {
        "title": "Upload Brand Assets",
        "body": "# Upload logo\n{baseDir}/scripts/canva.sh assets upload ./logo.png --name \"Company Logo\"\n\n# Upload multiple\nfor f in ./brand/*.png; do\n  {baseDir}/scripts/canva.sh assets upload \"$f\"\ndone"
      },
      {
        "title": "Autofill a Template",
        "body": "# List available templates\n{baseDir}/scripts/canva.sh templates list\n\n# Autofill with data\n{baseDir}/scripts/canva.sh autofill TEMPLATE_ID --data '{\n  \"title\": \"Q1 Report\",\n  \"subtitle\": \"Financial Summary\",\n  \"date\": \"January 2026\"\n}'"
      },
      {
        "title": "API Reference",
        "body": "Base URL: https://api.canva.com/rest\n\nSee references/api.md for detailed endpoint documentation."
      },
      {
        "title": "Token Expired",
        "body": "{baseDir}/scripts/canva.sh auth  # Re-authenticate"
      },
      {
        "title": "Rate Limited",
        "body": "The API has per-endpoint rate limits. The script handles backoff automatically."
      },
      {
        "title": "Missing Scopes",
        "body": "If operations fail with 403, ensure your integration has the required scopes enabled."
      },
      {
        "title": "Data Files",
        "body": "FilePurpose~/.clawdbot/canva-tokens.jsonOAuth tokens (encrypted)~/.clawdbot/canva-cache.jsonResponse cache"
      }
    ],
    "body": "Canva Connect\n\nManage Canva designs, assets, and folders via the Connect API.\n\nWhat This Skill Does (and Doesn't Do)\n✅ CAN DO\t❌ CANNOT DO\nList/search designs\tAdd content to designs\nCreate blank designs\tEdit existing design content\nExport designs (PNG/PDF/JPG)\tUpload documents (images only)\nCreate/manage folders\tAI design generation\nMove items between folders\t\nUpload images as assets\t\nAutofill brand templates\t\nRealistic Use Cases\n\n1. Asset Pipeline 🖼️\n\nGenerate diagram → upload to Canva → organize in project folder\n\n\n2. Export Automation 📤\n\nDesign finished in Canva → export via CLI → use in docs/website\n\n\n3. Design Organization 📁\n\nCreate project folders → move related designs → keep Canva tidy\n\n\n4. Brand Template Autofill 📋\n\nSet up template in Canva → pass data via API → get personalized output\n\nQuick Start\n# Authenticate (opens browser for OAuth)\n{baseDir}/scripts/canva.sh auth\n\n# List your designs\n{baseDir}/scripts/canva.sh designs list\n\n# Create a new design\n{baseDir}/scripts/canva.sh designs create --type doc --title \"My Document\"\n\n# Export a design\n{baseDir}/scripts/canva.sh export <design_id> --format pdf\n\nSetup\n1. Create Canva Integration\nGo to canva.com/developers/integrations\nClick Create an integration\nSet scopes:\ndesign:content (Read + Write)\ndesign:meta (Read)\nasset (Read + Write)\nbrandtemplate:meta (Read)\nbrandtemplate:content (Read)\nprofile (Read)\nSet OAuth redirect: http://127.0.0.1:3001/oauth/redirect\nNote Client ID and generate Client Secret\n2. Configure Environment\n\nAdd to ~/.clawdbot/clawdbot.json under skills.entries:\n\n{\n  \"skills\": {\n    \"entries\": {\n      \"canva\": {\n        \"clientId\": \"YOUR_CLIENT_ID\",\n        \"clientSecret\": \"YOUR_CLIENT_SECRET\"\n      }\n    }\n  }\n}\n\n\nOr set environment variables:\n\nexport CANVA_CLIENT_ID=\"your_client_id\"\nexport CANVA_CLIENT_SECRET=\"your_client_secret\"\n\n3. Authenticate\n{baseDir}/scripts/canva.sh auth\n\n\nOpens browser for OAuth consent. Tokens stored in ~/.clawdbot/canva-tokens.json.\n\nCommands\nAuthentication\nCommand\tDescription\nauth\tStart OAuth flow (opens browser)\nauth status\tCheck authentication status\nauth logout\tClear stored tokens\nDesigns\nCommand\tDescription\ndesigns list [--limit N]\tList your designs\ndesigns get <id>\tGet design details\ndesigns create --type <type> --title <title>\tCreate new design\ndesigns delete <id>\tMove design to trash\n\nDesign types: doc, presentation, whiteboard, poster, instagram_post, facebook_post, video, logo, flyer, banner\n\nExport\nCommand\tDescription\nexport <design_id> --format <fmt>\tExport design\nexport status <job_id>\tCheck export job status\n\nFormats: pdf, png, jpg, gif, pptx, mp4\n\nAssets\nCommand\tDescription\nassets list\tList uploaded assets\nassets upload <file> [--name <name>]\tUpload asset\nassets get <id>\tGet asset details\nassets delete <id>\tDelete asset\nBrand Templates\nCommand\tDescription\ntemplates list\tList brand templates\ntemplates get <id>\tGet template details\nautofill <template_id> --data <json>\tAutofill template with data\nFolders\nCommand\tDescription\nfolders list\tList folders\nfolders create <name>\tCreate folder\nfolders get <id>\tGet folder contents\nUser\nCommand\tDescription\nme\tGet current user profile\nExamples\nCreate and Export a Poster\n# Create\n{baseDir}/scripts/canva.sh designs create --type poster --title \"Event Poster\"\n\n# Export as PNG\n{baseDir}/scripts/canva.sh export DAF... --format png --output ./poster.png\n\nUpload Brand Assets\n# Upload logo\n{baseDir}/scripts/canva.sh assets upload ./logo.png --name \"Company Logo\"\n\n# Upload multiple\nfor f in ./brand/*.png; do\n  {baseDir}/scripts/canva.sh assets upload \"$f\"\ndone\n\nAutofill a Template\n# List available templates\n{baseDir}/scripts/canva.sh templates list\n\n# Autofill with data\n{baseDir}/scripts/canva.sh autofill TEMPLATE_ID --data '{\n  \"title\": \"Q1 Report\",\n  \"subtitle\": \"Financial Summary\",\n  \"date\": \"January 2026\"\n}'\n\nAPI Reference\n\nBase URL: https://api.canva.com/rest\n\nSee references/api.md for detailed endpoint documentation.\n\nTroubleshooting\nToken Expired\n{baseDir}/scripts/canva.sh auth  # Re-authenticate\n\nRate Limited\n\nThe API has per-endpoint rate limits. The script handles backoff automatically.\n\nMissing Scopes\n\nIf operations fail with 403, ensure your integration has the required scopes enabled.\n\nData Files\nFile\tPurpose\n~/.clawdbot/canva-tokens.json\tOAuth tokens (encrypted)\n~/.clawdbot/canva-cache.json\tResponse cache"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/coolmanns/canva-connect",
    "publisherUrl": "https://clawhub.ai/coolmanns/canva-connect",
    "owner": "coolmanns",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/canva-connect",
    "downloadUrl": "https://openagent3.xyz/downloads/canva-connect",
    "agentUrl": "https://openagent3.xyz/skills/canva-connect/agent",
    "manifestUrl": "https://openagent3.xyz/skills/canva-connect/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/canva-connect/agent.md"
  }
}