{"skill":{"slug":"canva-connect","displayName":"Canva Connect","summary":"Manage Canva designs, assets, and folders via the Connect API.\n\nWHAT IT CAN DO:\n- List/search/organize designs and folders\n- Export finished designs (PNG/PDF/JPG)\n- Upload images to asset library\n- Autofill brand templates with data\n- Create blank designs (doc/presentation/whiteboard/custom)\n\nWHAT IT CANNOT DO:\n- Add content to designs (text, shapes, elements)\n- Edit existing design content\n- Upload documents (images only)\n- AI design generation\n\nBest for: asset pipelines, export automation, organization, template autofill.\nTriggers: /canva, \"upload to canva\", \"export design\", \"list my designs\", \"canva folder\".","description":"---\nname: canva\nversion: 1.0.0\ndescription: |\n  Manage Canva designs, assets, and folders via the Connect API.\n  \n  WHAT IT CAN DO:\n  - List/search/organize designs and folders\n  - Export finished designs (PNG/PDF/JPG)\n  - Upload images to asset library\n  - Autofill brand templates with data\n  - Create blank designs (doc/presentation/whiteboard/custom)\n  \n  WHAT IT CANNOT DO:\n  - Add content to designs (text, shapes, elements)\n  - Edit existing design content\n  - Upload documents (images only)\n  - AI design generation\n  \n  Best for: asset pipelines, export automation, organization, template autofill.\n  Triggers: /canva, \"upload to canva\", \"export design\", \"list my designs\", \"canva folder\".\nauthor: clawdbot\nlicense: MIT\nmetadata:\n  clawdbot:\n    emoji: \"🎨\"\n    triggers: [\"/canva\"]\n    requires:\n      env:\n        - CANVA_CLIENT_ID\n        - CANVA_CLIENT_SECRET\n    primaryEnv: CANVA_CLIENT_ID\n    homepage: https://canva.dev/docs/connect/\n---\n\n# Canva Connect\n\nManage Canva designs, assets, and folders via the Connect API.\n\n## What This Skill Does (and Doesn't Do)\n\n| ✅ CAN DO | ❌ CANNOT DO |\n|-----------|--------------|\n| List/search designs | Add content to designs |\n| Create blank designs | Edit existing design content |\n| Export designs (PNG/PDF/JPG) | Upload documents (images only) |\n| Create/manage folders | AI design generation |\n| Move items between folders | |\n| Upload images as assets | |\n| Autofill brand templates | |\n\n## Realistic Use Cases\n\n**1. Asset Pipeline** 🖼️\n```\nGenerate diagram → upload to Canva → organize in project folder\n```\n\n**2. Export Automation** 📤\n```\nDesign finished in Canva → export via CLI → use in docs/website\n```\n\n**3. Design Organization** 📁\n```\nCreate project folders → move related designs → keep Canva tidy\n```\n\n**4. Brand Template Autofill** 📋\n```\nSet up template in Canva → pass data via API → get personalized output\n```\n\n## Quick Start\n\n```bash\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```\n\n## Setup\n\n### 1. Create Canva Integration\n\n1. Go to [canva.com/developers/integrations](https://canva.com/developers/integrations)\n2. Click **Create an integration**\n3. Set scopes:\n   - `design:content` (Read + Write)\n   - `design:meta` (Read)\n   - `asset` (Read + Write)\n   - `brandtemplate:meta` (Read)\n   - `brandtemplate:content` (Read)\n   - `profile` (Read)\n4. Set OAuth redirect: `http://127.0.0.1:3001/oauth/redirect`\n5. Note **Client ID** and generate **Client Secret**\n\n### 2. Configure Environment\n\nAdd to `~/.clawdbot/clawdbot.json` under `skills.entries`:\n\n```json\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```bash\nexport CANVA_CLIENT_ID=\"your_client_id\"\nexport CANVA_CLIENT_SECRET=\"your_client_secret\"\n```\n\n### 3. Authenticate\n\n```bash\n{baseDir}/scripts/canva.sh auth\n```\n\nOpens browser for OAuth consent. Tokens stored in `~/.clawdbot/canva-tokens.json`.\n\n## Commands\n\n### Authentication\n| Command | Description |\n|---------|-------------|\n| `auth` | Start OAuth flow (opens browser) |\n| `auth status` | Check authentication status |\n| `auth logout` | Clear stored tokens |\n\n### Designs\n| Command | Description |\n|---------|-------------|\n| `designs list [--limit N]` | List your designs |\n| `designs get <id>` | Get design details |\n| `designs create --type <type> --title <title>` | Create new design |\n| `designs delete <id>` | Move design to trash |\n\n**Design types:** `doc`, `presentation`, `whiteboard`, `poster`, `instagram_post`, `facebook_post`, `video`, `logo`, `flyer`, `banner`\n\n### Export\n| Command | Description |\n|---------|-------------|\n| `export <design_id> --format <fmt>` | Export design |\n| `export status <job_id>` | Check export job status |\n\n**Formats:** `pdf`, `png`, `jpg`, `gif`, `pptx`, `mp4`\n\n### Assets\n| Command | Description |\n|---------|-------------|\n| `assets list` | List uploaded assets |\n| `assets upload <file> [--name <name>]` | Upload asset |\n| `assets get <id>` | Get asset details |\n| `assets delete <id>` | Delete asset |\n\n### Brand Templates\n| Command | Description |\n|---------|-------------|\n| `templates list` | List brand templates |\n| `templates get <id>` | Get template details |\n| `autofill <template_id> --data <json>` | Autofill template with data |\n\n### Folders\n| Command | Description |\n|---------|-------------|\n| `folders list` | List folders |\n| `folders create <name>` | Create folder |\n| `folders get <id>` | Get folder contents |\n\n### User\n| Command | Description |\n|---------|-------------|\n| `me` | Get current user profile |\n\n## Examples\n\n### Create and Export a Poster\n```bash\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```\n\n### Upload Brand Assets\n```bash\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```\n\n### Autofill a Template\n```bash\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```\n\n## API Reference\n\nBase URL: `https://api.canva.com/rest`\n\nSee [references/api.md](references/api.md) for detailed endpoint documentation.\n\n## Troubleshooting\n\n### Token Expired\n```bash\n{baseDir}/scripts/canva.sh auth  # Re-authenticate\n```\n\n### Rate Limited\nThe API has per-endpoint rate limits. The script handles backoff automatically.\n\n### Missing Scopes\nIf operations fail with 403, ensure your integration has the required scopes enabled.\n\n## Data Files\n\n| File | Purpose |\n|------|---------|\n| `~/.clawdbot/canva-tokens.json` | OAuth tokens (encrypted) |\n| `~/.clawdbot/canva-cache.json` | Response cache |\n","topics":["PDF"],"tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":4186,"installsAllTime":157,"installsCurrent":11,"stars":3,"versions":1},"createdAt":1769735275413,"updatedAt":1778485868789},"latestVersion":{"version":"1.0.0","createdAt":1769735275413,"changelog":"Initial release: design management, asset uploads, folder organization, export automation","license":null},"metadata":{"setup":[{"key":"CANVA_CLIENT_ID","required":true},{"key":"CANVA_CLIENT_SECRET","required":true}],"os":null,"systems":null},"owner":{"handle":"coolmanns","userId":"s17bmqpkzpf403h4fcvqftdmas83fc8m","displayName":"coolmanns","image":"https://avatars.githubusercontent.com/u/117685070?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779917879646}}