Canva Connect
Scanned@coolmanns
npx machina-cli add skill @coolmanns/canva-connect --openclawCanva Connect
Manage Canva designs, assets, and folders via the Connect API.
What This Skill Does (and Doesn't Do)
| ✅ CAN DO | ❌ CANNOT DO |
|---|---|
| List/search designs | Add content to designs |
| Create blank designs | Edit existing design content |
| Export designs (PNG/PDF/JPG) | Upload documents (images only) |
| Create/manage folders | AI design generation |
| Move items between folders | |
| Upload images as assets | |
| Autofill brand templates |
Realistic Use Cases
1. Asset Pipeline 🖼️
Generate diagram → upload to Canva → organize in project folder
2. Export Automation 📤
Design finished in Canva → export via CLI → use in docs/website
3. Design Organization 📁
Create project folders → move related designs → keep Canva tidy
4. Brand Template Autofill 📋
Set up template in Canva → pass data via API → get personalized output
Quick Start
# Authenticate (opens browser for OAuth)
{baseDir}/scripts/canva.sh auth
# List your designs
{baseDir}/scripts/canva.sh designs list
# Create a new design
{baseDir}/scripts/canva.sh designs create --type doc --title "My Document"
# Export a design
{baseDir}/scripts/canva.sh export <design_id> --format pdf
Setup
1. Create Canva Integration
- Go to canva.com/developers/integrations
- Click Create an integration
- Set scopes:
design:content(Read + Write)design:meta(Read)asset(Read + Write)brandtemplate:meta(Read)brandtemplate:content(Read)profile(Read)
- Set OAuth redirect:
http://127.0.0.1:3001/oauth/redirect - Note Client ID and generate Client Secret
2. Configure Environment
Add to ~/.clawdbot/clawdbot.json under skills.entries:
{
"skills": {
"entries": {
"canva": {
"clientId": "YOUR_CLIENT_ID",
"clientSecret": "YOUR_CLIENT_SECRET"
}
}
}
}
Or set environment variables:
export CANVA_CLIENT_ID="your_client_id"
export CANVA_CLIENT_SECRET="your_client_secret"
3. Authenticate
{baseDir}/scripts/canva.sh auth
Opens browser for OAuth consent. Tokens stored in ~/.clawdbot/canva-tokens.json.
Commands
Authentication
| Command | Description |
|---|---|
auth | Start OAuth flow (opens browser) |
auth status | Check authentication status |
auth logout | Clear stored tokens |
Designs
| Command | Description |
|---|---|
designs list [--limit N] | List your designs |
designs get <id> | Get design details |
designs create --type <type> --title <title> | Create new design |
designs delete <id> | Move design to trash |
Design types: doc, presentation, whiteboard, poster, instagram_post, facebook_post, video, logo, flyer, banner
Export
| Command | Description |
|---|---|
export <design_id> --format <fmt> | Export design |
export status <job_id> | Check export job status |
Formats: pdf, png, jpg, gif, pptx, mp4
Assets
| Command | Description |
|---|---|
assets list | List uploaded assets |
assets upload <file> [--name <name>] | Upload asset |
assets get <id> | Get asset details |
assets delete <id> | Delete asset |
Brand Templates
| Command | Description |
|---|---|
templates list | List brand templates |
templates get <id> | Get template details |
autofill <template_id> --data <json> | Autofill template with data |
Folders
| Command | Description |
|---|---|
folders list | List folders |
folders create <name> | Create folder |
folders get <id> | Get folder contents |
User
| Command | Description |
|---|---|
me | Get current user profile |
Examples
Create and Export a Poster
# Create
{baseDir}/scripts/canva.sh designs create --type poster --title "Event Poster"
# Export as PNG
{baseDir}/scripts/canva.sh export DAF... --format png --output ./poster.png
Upload Brand Assets
# Upload logo
{baseDir}/scripts/canva.sh assets upload ./logo.png --name "Company Logo"
# Upload multiple
for f in ./brand/*.png; do
{baseDir}/scripts/canva.sh assets upload "$f"
done
Autofill a Template
# List available templates
{baseDir}/scripts/canva.sh templates list
# Autofill with data
{baseDir}/scripts/canva.sh autofill TEMPLATE_ID --data '{
"title": "Q1 Report",
"subtitle": "Financial Summary",
"date": "January 2026"
}'
API Reference
Base URL: https://api.canva.com/rest
See references/api.md for detailed endpoint documentation.
Troubleshooting
Token Expired
{baseDir}/scripts/canva.sh auth # Re-authenticate
Rate Limited
The API has per-endpoint rate limits. The script handles backoff automatically.
Missing Scopes
If operations fail with 403, ensure your integration has the required scopes enabled.
Data Files
| File | Purpose |
|---|---|
~/.clawdbot/canva-tokens.json | OAuth tokens (encrypted) |
~/.clawdbot/canva-cache.json | Response cache |
Overview
Canva Connect lets you manage Canva designs, folders, and assets through a Connect API. It supports listing/searching designs and folders, exporting finished designs to PNG, PDF, or JPG, uploading images to the asset library, autofilling brand templates with data, and creating blank designs for docs, presentations, whiteboards, or custom layouts. This is ideal for asset pipelines, export automation, organization, and template autofill workflows.
How This Skill Works
Using OAuth, Canva Connect exposes commands to list, create, export, and manage assets and folders. You can autofill brand templates and upload images, but you cannot add or edit content inside existing designs or AI-generate designs. Permissions are scoped to design, asset, and brandtemplate resources (e.g., design:content, asset, brandtemplate:meta/content) to control access.
When to Use It
- Asset pipelines: automate image uploads and organize designs in project folders.
- Export automation: produce final assets for docs, websites, or presentations.
- Design organization: keep projects tidy by creating folders and moving items.
- Brand template autofill: populate templates with data to generate personalized outputs.
- Blank design creation: spin up doc/presentation/whiteboard templates for new workstreams.
Quick Start
- Step 1: Authenticate (OAuth) with {baseDir}/scripts/canva.sh auth
- Step 2: List your designs with {baseDir}/scripts/canva.sh designs list
- Step 3: Export a design with {baseDir}/scripts/canva.sh export <design_id> --format pdf
Best Practices
- Define a clear Canva folder structure and consistent naming before automating.
- Use export formats smartly and cache assets for reuse.
- Respect limitations: avoid trying to add content or AI generation; use create blank designs for scaffolding.
- Store credentials securely (CANVA_CLIENT_ID/SECRET) and rotate them; prefer environment variables.
- Test end-to-end in a staging workspace and monitor token expiry.
Example Use Cases
- Asset pipeline: Generate diagram → upload to Canva → organize in project folder.
- Export automation: Finished design → export via CLI → integrate into docs/website.
- Design organization: Create project folders → move related designs → keep Canva tidy.
- Brand template autofill: Provide data to a brand template and retrieve personalized output.
- Blank design scaffolding: Script creates doc/presentation templates for new projects.