Skip to content
Back to skills

Canva Manager

ASecurity

Comprehensive Canva API integration skill for managing designs, folders, assets, and exports. Uses a 3-mode workflow: PLAN (analyze what needs to be done), CLARIFY (ask user questions), and IMPLEMENT (execute changes via Python scripts). Ensures safe operations by always confirming changes before execution. Use this skill when the user wants to work with their Canva account, manage designs, organize folders, upload assets, or export designs.

  • 7 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 26, 2026
developmentpythongobashapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add OpenAnalystInc/10x-Canva-Skills --skill canva-manager --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Canva Manager?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Canva Manager
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/openanalystinc-canva-manager/badge)](https://www.skillsdirectory.com/skills/openanalystinc-canva-manager)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: canva-manager
description: |
  Comprehensive Canva API integration skill for managing designs, folders, assets, and exports.
  Uses a 3-mode workflow: PLAN (analyze what needs to be done), CLARIFY (ask user questions),
  and IMPLEMENT (execute changes via Python scripts). Ensures safe operations by always
  confirming changes before execution. Use this skill when the user wants to work with their
  Canva account, manage designs, organize folders, upload assets, or export designs.
---

# Canva Manager Skill

A comprehensive skill for managing Canva designs, folders, and assets through the Canva Connect API. This skill operates in a **3-mode workflow** to ensure safe and accurate operations on your Canva account.

## Overview

This skill provides full control over your Canva account including:
- **Designs**: List, view, create, import (PPTX/PDF/AI/PSD), export, and manage designs
- **Folders**: Create, organize, move items, and manage your project structure
- **Assets**: Upload images/videos, manage asset library
- **Exports**: Export designs to various formats (PDF, PNG, JPG, PPTX, MP4, GIF)

## 3-Mode Workflow

**CRITICAL: Always follow this workflow. Never skip to implementation without completing Plan and Clarify modes.**

### Mode 1: PLAN

Before making ANY changes to Canva, you MUST:

1. **Analyze the Request**
   - What exactly does the user want to accomplish?
   - Which Canva resources are involved (designs, folders, assets)?
   - What API operations will be needed?

2. **Gather Current State**
   - Run the discovery scripts to understand current Canva account state
   - List relevant designs, folders, or assets
   - Identify exactly which items will be affected

3. **Create Detailed Plan**
   - Document every action that will be taken
   - List which designs/folders/assets will be modified
   - Specify the exact changes (names, exports, moves, etc.)
   - Identify potential risks or irreversible actions

4. **Present Plan to User**

### Mode 2: CLARIFY

After presenting the plan, you MUST ask clarifying questions:

1. **Required Questions**
   - "Does this plan accurately reflect what you want to do?"
   - "Are there any items I should exclude from this operation?"

2. **Context-Specific Questions**
   - For exports: "What format and quality do you prefer?"
   - For folder operations: "Should I create backups first?"
   - For design modifications: "Should I work on copies instead of originals?"

3. **Confirmation Requirements**
   - Get explicit "yes" or confirmation before proceeding
   - If user has concerns, return to PLAN mode with modifications

### Mode 3: IMPLEMENT

Only after explicit user approval:

1. **Execute with Logging**
   - Run the appropriate Python scripts
   - Log every API call and response
   - Save results to the output folder

2. **Report Results**
   - Show exactly what was changed
   - Provide links/IDs of affected items
   - Note any errors or partial completions

## Environment Setup

Ensure the `.env` file is configured:

```bash
# Required - Get from https://www.canva.com/developers/
CANVA_CLIENT_ID=your_client_id
CANVA_CLIENT_SECRET=your_client_secret

# OAuth tokens (obtained after authorization)
CANVA_ACCESS_TOKEN=your_access_token
CANVA_REFRESH_TOKEN=your_refresh_token

# Optional
CANVA_REDIRECT_URI=http://127.0.0.1:3001/oauth/redirect
```

## Running Python Scripts (Virtual Environment)

**IMPORTANT**: Always use the virtual environment Python:

```bash
# Windows
.venv\Scripts\python.exe scripts/<script_name>.py

# macOS/Linux
.venv/bin/python scripts/<script_name>.py
```

## Available Scripts

All scripts are in `scripts/`:

### Discovery Scripts (Safe - Read Only)

#### auth_check.py - Verify credentials and get user info
```bash
.venv\Scripts\python.exe scripts/auth_check.py
```

#### list_designs.py - List all designs with metadata
```bash
.venv\Scripts\python.exe scripts/list_designs.py
.venv\Scripts\python.exe scripts/list_designs.py --query "presentation" --limit 10
.venv\Scripts\python.exe scripts/list_designs.py --json
```

#### list_folders.py - List folder structure
```bash
.venv\Scripts\python.exe scripts/list_folders.py
.venv\Scripts\python.exe scripts/list_folders.py --json
```

#### get_design_details.py - Get detailed info about a specific design
```bash
.venv\Scripts\python.exe scripts/get_design_details.py "DESIGN_ID"
.venv\Scripts\python.exe scripts/get_design_details.py "DESIGN_ID" --pages --formats
```

#### list_folder_contents.py - List items in a specific folder
```bash
.venv\Scripts\python.exe scripts/list_folder_contents.py "FOLDER_ID"
.venv\Scripts\python.exe scripts/list_folder_contents.py "root" --types design folder
.venv\Scripts\python.exe scripts/list_folder_contents.py "uploads"
```

### Export Scripts

#### export_design.py - Export a design to specified format
```bash
.venv\Scripts\python.exe scripts/export_design.py "DESIGN_ID" --format pdf
.venv\Scripts\python.exe scripts/export_design.py "DESIGN_ID" --format pptx --output output/exports
.venv\Scripts\python.exe scripts/export_design.py "DESIGN_ID" --format png --pages 1 2 3
```

#### download_export.py - Download a completed export by job ID
```bash
.venv\Scripts\python.exe scripts/download_export.py "EXPORT_JOB_ID"
.venv\Scripts\python.exe scripts/download_export.py "EXPORT_JOB_ID" --output output/myfile
```

#### batch_export.py - Export multiple designs at once
```bash
.venv\Scripts\python.exe scripts/batch_export.py --designs "ID1" "ID2" "ID3" --format pdf
.venv\Scripts\python.exe scripts/batch_export.py --designs "ID1" "ID2" --format pptx --output output/exports
```

### Import Scripts

#### import_design.py - Import PPTX, PDF, AI, or PSD files into Canva
```bash
# Import a PPTX file
.venv\Scripts\python.exe scripts/import_design.py "presentation.pptx"

# Import with custom title
.venv\Scripts\python.exe scripts/import_design.py "presentation.pptx" --title "My Imported Presentation"

# Import a PDF
.venv\Scripts\python.exe scripts/import_design.py "document.pdf" --title "My PDF"

# Start import without waiting
.venv\Scripts\python.exe scripts/import_design.py "presentation.pptx" --no-wait
```

Supported import formats:
- `.pptx` - PowerPoint presentations
- `.pdf` - PDF documents
- `.ai` - Adobe Illustrator files
- `.psd` - Photoshop files

#### get_import_status.py - Check status of import job
```bash
.venv\Scripts\python.exe scripts/get_import_status.py "JOB_ID"
.venv\Scripts\python.exe scripts/get_import_status.py "JOB_ID" --wait
```

### Asset Upload Scripts

#### upload_asset.py - Upload images/videos to Canva
```bash
# Upload an image
.venv\Scripts\python.exe scripts/upload_asset.py "image.png"

# Upload with custom name
.venv\Scripts\python.exe scripts/upload_asset.py "photo.jpg" --name "Product Photo"

# Upload a video
.venv\Scripts\python.exe scripts/upload_asset.py "video.mp4"
```

Supported upload formats:
- Images: `.jpg`, `.jpeg`, `.png`, `.gif`, `.webp`, `.heic`, `.heif`, `.tiff`, `.tif` (max 50MB)
- Videos: `.mp4`, `.mov`, `.avi`, `.webm`, `.mkv`, `.m4v`, `.mpeg`, `.mpg` (max 500MB)

### Folder Management Scripts

#### create_folder.py - Create a new folder
```bash
.venv\Scripts\python.exe scripts/create_folder.py --name "My Project"
.venv\Scripts\python.exe scripts/create_folder.py --name "Subfolder" --parent "PARENT_FOLDER_ID"
```

#### move_items.py - Move items between folders
```bash
.venv\Scripts\python.exe scripts/move_items.py --items "ITEM_ID1" "ITEM_ID2" --folder "TARGET_FOLDER_ID"
.venv\Scripts\python.exe scripts/move_items.py --items "DESIGN_ID" --folder "root"
```

#### delete_folder.py - Delete a folder (moves to trash)
```bash
.venv\Scripts\python.exe scripts/delete_folder.py "FOLDER_ID" --confirm
```

### Design Creation Scripts

#### create_design.py - Create a new blank design
```bash
# Create by preset type
.venv\Scripts\python.exe scripts/create_design.py --type presentation --title "My Presentation"
.venv\Scripts\python.exe scripts/create_design.py --type instagram_post

# Create with custom dimensions
.venv\Scripts\python.exe scripts/create_design.py --width 1920 --height 1080 --title "Custom Design"

# List available types
.venv\Scripts\python.exe scripts/create_design.py --list-types
```

Available design types:
- `instagram_post`, `instagram_story`
- `facebook_post`
- `presentation`
- `doc`
- `whiteboard`
- `poster`, `flyer`
- `a4`, `letter`

### Asset Management Scripts

#### delete_asset.py - Delete an asset (moves to trash)
```bash
.venv\Scripts\python.exe scripts/delete_asset.py "ASSET_ID" --confirm
```

## API Rate Limits

Be aware of Canva API rate limits:
- List operations: 100 requests/user
- Create/Update operations: 20-30 requests/user
- Export operations: 20 requests/user
- Import operations: 20 requests/minute

For bulk operations, scripts automatically implement delays between requests.

## Usage Examples

### Example 1: Explore Canva Account
```bash
# Check authentication
.venv\Scripts\python.exe scripts/auth_check.py

# List all designs
.venv\Scripts\python.exe scripts/list_designs.py

# List folder structure
.venv\Scripts\python.exe scripts/list_folders.py
```

### Example 2: Export Presentation to PPTX
```bash
# Find the design
.venv\Scripts\python.exe scripts/list_designs.py --query "Q4 Report"

# Export it
.venv\Scripts\python.exe scripts/export_design.py "DESIGN_ID" --format pptx --output output/exports
```

### Example 3: Import PPTX to Canva
```bash
# Import the file
.venv\Scripts\python.exe scripts/import_design.py "presentation.pptx" --title "Imported Presentation"
```

### Example 4: Organize Designs into Folders
```bash
# Create a folder
.venv\Scripts\python.exe scripts/create_folder.py --name "2024 Projects"

# Move designs to the folder
.venv\Scripts\python.exe scripts/move_items.py --items "DESIGN_ID1" "DESIGN_ID2" --folder "NEW_FOLDER_ID"
```

### Example 5: Upload Assets
```bash
# Upload images
.venv\Scripts\python.exe scripts/upload_asset.py "logo.png" --name "Company Logo"
.venv\Scripts\python.exe scripts/upload_asset.py "photo.jpg" --name "Product Photo"
```

## Safety Guidelines

1. **Never modify without confirmation** - Always get explicit approval
2. **Prefer copies over originals** - For risky operations, suggest working on copies
3. **Batch operations need extra care** - Show sample of items before bulk changes
4. **Export originals before deletion** - If user wants to delete, export first
5. **Log everything** - All operations are logged to output folder
6. **Rate limit awareness** - Don't exceed API limits; scripts implement delays

## Troubleshooting

### Authentication Issues
```bash
.venv\Scripts\python.exe scripts/auth_check.py
```
If this fails, re-run OAuth flow or refresh tokens.

### Design Not Found
- Check exact spelling and case
- Try listing all designs to find the correct name
- Designs may be in trash or shared with you

### Export Failures
- Some formats require Canva Pro
- Very large designs may timeout
- Check design isn't corrupted

### Import Failures
- Ensure file format is supported (.pptx, .pdf, .ai, .psd)
- Check file size limits
- Verify file isn't corrupted

## Resources

- [Canva Connect API Docs](https://www.canva.dev/docs/connect/)
- [Canva Developer Portal](https://www.canva.com/developers/)
- [API Rate Limits](https://www.canva.dev/docs/connect/rate-limits/)

## Todo List Tracking (REQUIRED)

**ALWAYS use TodoWrite** to track progress for Canva operations:

```json
[
  {"content": "Check API authentication", "status": "in_progress", "activeForm": "Checking authentication"},
  {"content": "List user's designs", "status": "pending", "activeForm": "Listing designs"},
  {"content": "Export requested design", "status": "pending", "activeForm": "Exporting design"},
  {"content": "Confirm completion", "status": "pending", "activeForm": "Confirming completion"}
]
```

## File Outputs

All outputs are saved to the `output/` folder:
- `output/exports/` - Exported files (PDFs, images, PPTX, etc.)
- `output/logs/` - Operation logs with timestamps
- `output/auth/` - Authentication info

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.