Agent skill
canvas-export
Export Obsidian Canvas files to PNG, SVG, or PDF formats. Uses the Advanced Canvas plugin's built-in export when Obsidian is running, or falls back to Playwright browser-based screenshot capture. Supports single canvas export, presentation slide-per-page PDF export, and batch export. Triggers on: canvas export, export canvas, canvas to png, canvas to pdf, canvas to svg, save canvas as image, screenshot canvas, export presentation.
Install this agent skill to your Project
npx add-skill https://github.com/AgriciDaniel/claude-canvas/tree/main/skills/canvas-export
SKILL.md
canvas-export: Export Canvas to Image/PDF
Export Methods
Method 1: Advanced Canvas Plugin Export (Preferred)
The Advanced Canvas plugin provides built-in PNG and SVG export with transparency support.
Requirements: Obsidian running with Advanced Canvas installed.
Workflow:
- Instruct the user: "In Obsidian, right-click the canvas background → Advanced Canvas → Export as PNG/SVG"
- Or use Obsidian's command palette:
Advanced Canvas: Export as PNG - The exported file appears in the canvas directory.
This is the highest-quality export method — it uses Obsidian's own rendering engine.
Method 2: Playwright Screenshot (Fallback)
When Obsidian is not running or Advanced Canvas is not installed, use Playwright to capture the canvas.
Requirements: Playwright installed (pip install playwright && playwright install chromium)
Workflow:
- Check if Playwright is available:
bash
python3 -c "from playwright.sync_api import sync_playwright; print('ok')" 2>/dev/null && echo "available" || echo "not available" - If available, generate a standalone HTML viewer of the canvas and screenshot it:
bash
# Generate HTML from canvas JSON python3 -c " import json, sys canvas = json.load(open(sys.argv[1])) # ... render to HTML with absolute positioning ... " [canvas_path] > /tmp/canvas-preview.html # Screenshot with Playwright python3 -c " from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch() page = browser.new_page(viewport={'width': 1920, 'height': 1080}) page.goto('file:///tmp/canvas-preview.html') page.screenshot(path='[output_path]', full_page=True) browser.close() " - Report the output path and dimensions.
Method 3: User-Assisted Screenshot
When neither method is available:
- Tell the user: "Open the canvas in Obsidian, zoom to fit all content, then take a screenshot."
- On Linux (COSMIC): suggest
Printkey for screenshot tool. - On macOS: suggest
Cmd+Shift+4.
Operations
Export to PNG (/canvas export png [output_path])
- Identify the target canvas (default: active canvas or
main.canvas). - Determine output path:
- If provided: use it.
- If not:
[canvas_dir]/exports/[canvas-name].png
- Try Method 1 (Advanced Canvas) first.
- If not available: try Method 2 (Playwright).
- If neither: use Method 3 (user-assisted).
- Report: "Exported [canvas] to [path] ([width]x[height] pixels)"
Export to SVG (/canvas export svg [output_path])
- Same flow as PNG, but use SVG format.
- Advanced Canvas supports SVG export with transparency.
- Playwright fallback: render HTML, use
page.screenshot(type='svg')— note: Playwright doesn't natively export SVG. Fall back to PNG. - Report format and path.
Export to PDF (/canvas export pdf [output_path])
For standard canvases:
- Export to PNG first, then convert:
convert [png] [pdf](ImageMagick).
For presentation canvases:
- Detect if canvas has edge-connected slide groups (presentation pattern).
- Export each slide group as a separate PNG.
- Combine into a multi-page PDF:
bash
convert slide-1.png slide-2.png slide-3.png output.pdf - Report: "Exported [N]-slide presentation to [path]"
Output Directory Convention
Exports go to [canvas_dir]/exports/ by default:
- Vault mode:
wiki/canvases/exports/ - Standalone mode:
.canvases/exports/
Create the directory if it doesn't exist.
Limitations
- Playwright rendering is approximate — it doesn't replicate Obsidian's exact canvas renderer
- SVG export via Playwright is not supported — falls back to PNG
- PDF export requires ImageMagick (
convertcommand) - Mermaid diagrams in text nodes may not render in Playwright screenshots (requires Mermaid JS library)
- GIF animations are captured as static frames in screenshots
- Export quality depends on the method used (Advanced Canvas > Playwright > Screenshot)
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
canvas-create
Create new Obsidian Canvas files — blank with a starter structure, or from one of 12 template archetypes (presentation, flowchart, mind-map, gallery, dashboard, storyboard, knowledge-graph, mood-board, timeline, comparison, kanban, project-brief). Handles directory creation, slug generation, and starter zone setup. Triggers on: canvas create, create canvas, new canvas, canvas new, start canvas.
canvas
AI-orchestrated visual production for Obsidian Canvas. Create presentations, flowcharts, mood boards, knowledge graphs, galleries, storyboards, timelines, dashboards, and more with intelligent layout and AI-generated content. Claude acts as Creative Director — dispatching sub-agents for image generation, SVG diagrams, GIF creation, and spatial layout. Supports 12 template archetypes, 6 layout algorithms, and Advanced Canvas presentation mode. Triggers on: /canvas, create canvas, build canvas, make a presentation, visual board, mood board, flowchart canvas, storyboard, canvas from template, lay out canvas, export canvas, canvas layout, canvas generate, add to canvas, put this on the canvas, open canvas, canvas present, canvas template.
canvas-template
Browse and instantiate 12 canvas template archetypes: presentation, flowchart, mind-map, gallery, dashboard, storyboard, knowledge-graph, mood-board, timeline, comparison, kanban, project-brief. Each template generates a ready-to-use canvas with proper layout, zones, and placeholder content. Triggers on: canvas template, canvas template list, browse templates, canvas from template, use template, show archetypes.
canvas-generate
AI-orchestrated full canvas generation. Given a description, detects the best archetype, generates content and visuals, instantiates a template, applies layout, and produces a complete canvas. The flagship command. Dispatches canvas-media and canvas-composer agents for parallel asset generation. Triggers on: canvas generate, generate canvas, create a visual board, build me a canvas, make a canvas about, canvas from description, auto-generate canvas, full canvas generation.
canvas-populate
Add content to existing Obsidian Canvas files. Supports all node types: images (with auto aspect ratio detection), text cards, PDFs, wiki notes, web links, Mermaid diagrams, SVGs, GIFs, AI-generated images via banana. Also adds zones (groups), edges between nodes, and imports recent banana images. Triggers on: canvas add, add to canvas, put on canvas, canvas zone, canvas connect, canvas from banana, add image to canvas, add text to canvas.
canvas-present
Build presentation-mode canvases for the Advanced Canvas plugin. Creates slide-deck canvases with 1200x675 group nodes connected by edges for arrow-key navigation. Supports title slides, content slides with images, full-text slides, and optional script annotation columns for video planning. Triggers on: canvas present, create presentation, build slide deck, canvas slides, make a presentation, presentation canvas, present from notes, slide deck canvas, canvas presentation.
Didn't find tool you were looking for?