Help us improve
Share bugs, ideas, or general feedback.
From claude-canvas
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.
npx claudepluginhub agricidaniel/claude-canvasHow this skill is triggered — by the user, by Claude, or both
Slash command
/claude-canvas:canvas-exportThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
---
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.
Manages Obsidian canvas JSON files: creates visual boards, adds images/text cards/PDFs/wiki pages with zone auto-positioning. Integrates /banana images. Use /canvas commands.
Creates and edits Obsidian JSON Canvas (.canvas) files with nodes, edges, groups, and connections for mind maps, flowcharts, and visual diagrams.
Share bugs, ideas, or general feedback.
The Advanced Canvas plugin provides built-in PNG and SVG export with transparency support.
Requirements: Obsidian running with Advanced Canvas installed.
Workflow:
Advanced Canvas: Export as PNGThis is the highest-quality export method — it uses Obsidian's own rendering engine.
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:
python3 -c "from playwright.sync_api import sync_playwright; print('ok')" 2>/dev/null && echo "available" || echo "not available"
# 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()
"
When neither method is available:
Print key for screenshot tool.Cmd+Shift+4./canvas export png [output_path])main.canvas).[canvas_dir]/exports/[canvas-name].png/canvas export svg [output_path])page.screenshot(type='svg') — note: Playwright doesn't natively export SVG. Fall back to PNG./canvas export pdf [output_path])For standard canvases:
convert [png] [pdf] (ImageMagick).For presentation canvases:
convert slide-1.png slide-2.png slide-3.png output.pdf
Exports go to [canvas_dir]/exports/ by default:
wiki/canvases/exports/.canvases/exports/Create the directory if it doesn't exist.
convert command)