Open for commentsSelect text to comment

Template-fill routes for social graphics (Claude + existing designs)

Researched 2026-10-20. Question: can Claude fill text into an existing designed template (esp. the Canva carousel / quote-card template Seeds of Renaissance already has) without moving anything, rather than generating designs from scratch?

TL;DR

  • Yes, very probably, via the official Canva MCP / Claude connector. Since late 2025 it exposes an editing transaction on existing designs: start-editing-transaction → perform-editing-operations (with replace_text / find_and_replace_text) → commit-editing-transaction → export-design. Text replacement is a targeted operation on an element; position only changes if Claude calls position_element / resize_element. Not yet tested by us. Whether long text reflows/overflows a fixed text box is the real risk, not elements moving.
  • Autofill (brand template + named data fields) is the cleanest "fill, don't touch" route, but plan rules conflict: the Connect API docs now say autofill works on Pro, Teams, Canva for Nonprofits and Enterprise; Canva's AI-connector / MCP pages and the skills built on them still say "Enterprise only" for the MCP autofill-design tool. Test it.
  • Bulk Create (CSV → many pages) is manual-in-UI but available on Nonprofits and is a good no-code fallback: Claude writes the CSV, a human clicks Bulk Create.
  • If Canva disappoints, the strongest alternatives are: Templated.io or Orshot (both import Canva designs, have official MCP servers, render multi-slide carousels, ~$29–39/month entry), or a code route (HTML/CSS template → PNG via Playwright) which is free, deterministic and fully Claude-drivable.

1. Canva

1a. Canva MCP server / Claude connector (official)

Endpoint https://mcp.canva.com/mcp (Claude Code: claude mcp add --transport http canva https://mcp.canva.com/mcp, OAuth). Also available as a connector in Claude's directory.

Tools documented by Canva (verify-integration doc):

GroupToolNotes
Discoverysearch-designs, get-design-content, get-design-pagesget-design-content returns text but not editable element IDs
Generationgenerate-design, create-design-from-candidatethe "generate from scratch" path the team found poor
Editingstart-editing-transaction, perform-editing-operations, commit-editing-transaction (+ cancel-editing-transaction)edits are a draft until commit; concurrent browser edits can make the transaction stale
Assets/exportupload-asset-from-url, export-designexport returns a download link (PNG/PDF etc.)
Templates (Enterprise per Canva)search-brand-templates, get-brand-template-dataset, autofill-designsee 1b

Operations inside perform-editing-operations (from the OpenAI-plugins Canva skill mirrored on tessl; secondary source, consistent with Canva's docs): replace_text (whole element), find_and_replace_text (substring, across pages), format_text, update_fill / insert_fill (swap image), delete_element, position_element, resize_element, update_title, update_autofill_field. Limits: no group/ungroup, no animation, shapes can't be restyled; responsive pages block position/resize.

Implication for the untested question: a "fill this template" prompt only needs replace_text or find_and_replace_text. Nothing in that path moves elements. Best practice: put placeholder tokens in the template ({{HEADLINE}}, {{QUOTE}}, {{AUTHOR}}, {{SLIDE_2_BODY}}) and tell Claude to use find_and_replace_text only, on a copy of the template. Unverified: whether text formatting (font, size) is always kept on replace_text, and how overflow is handled — check thumbnails before commit.

Plan: Canva says all Canva plans (incl. Free) can connect; resize is paid-only; autofill/brand templates Enterprise-only (per Canva AI connector page, via search snippets; the page returns 403 to fetchers). Claude side: connectors need a paid Claude plan (per Canva setup docs, now at canva.com/help/mcp-agent-setup).

Caveat: there is no documented "duplicate design" tool in the list above. Workflow is either (a) a human duplicates the template in Canva and Claude edits the copy, or (b) use autofill, which always creates a new design.

1b. Canva Connect API: brand templates + Autofill

  • Flow (autofill guide): publish design as brand template → GET /brand-templates/{id}/dataset (field names/types) → POST /autofills with values → poll job → returns new design → export via export API.
  • Fields are defined in the Canva editor with the "Data autofill" app (text, image, chart, sheet fields per create-autofill-job reference). Omitted fields keep template defaults.
  • Plan (verified in current docs): "available when your app acts on behalf of a user on Canva Pro (including Canva Education and Canva for Nonprofits), Canva Teams, or Canva Enterprise." MFA must be on. 60 requests/min/user. "Usage limits will be introduced in the future." Scope design:content:write.
  • Historically this was Enterprise-only; the docs have widened. The MCP autofill-design tool and Canva's marketing still say Enterprise-only. Treat as unresolved until tested on the Life Itself Nonprofits account.
  • Using the Connect API directly means building a small integration (OAuth app in Developer Portal). Doable from a script Claude writes; heavier than the MCP.

1c. Bulk Create (UI)

  • Help: Bulk Create: available to Pro, Teams, Business, Enterprise, Education and Nonprofits, desktop only, up to 150 data fields. Connect each text/image element to a column ("Connect data"), upload CSV/XLSX or paste, one page per row.
  • Not an API. Agent role: Claude writes the CSV (one row per quote card, or one row per carousel slide); a human runs Bulk Create. Zero layout drift, because Canva only substitutes text.
  • For a carousel, Bulk Create gives one page per row, which suits "one row = one slide" if every slide uses the same layout; mixed layouts (cover / body / CTA) need separate runs or a multi-page autofill template.

1d. Canva for Nonprofits

Free Canva Pro-level features for one team of up to 50 people, including publishing brand templates (help). So Life Itself likely has: brand templates, Bulk Create, and (per the Connect docs) Connect API Autofill. Not Enterprise, so MCP autofill-design may be blocked.

1e. Apps SDK

Canva Apps SDK builds in-editor apps (a panel inside Canva). It can modify the current design, but it's a JS app to build and host; overkill for this. Skip.

2. Alternatives: template + data → image

ToolCanva/Figma importCarousel (multi-slide)Agent accessEntry price (verify)
Templated.io"Import your existing designs" (Canva)Yes, render call takes a slides array → array of imagesOfficial remote MCP (all plans), 25+ tools$29/mo annual for 1,000 credits; 1 credit/image; 50 free credits
OrshotCanva (public share link, all pages, text/image layers auto-parameterised) and Figma importYes (multi-page)Hosted MCP mcp.orshot.comFree 100 credits/mo; $39/mo 1,500 credits; 1 credit/image or PDF page
BannerbearNo Canva importNo native multi-slide; render per slideREST API; MCP mentioned on some plans~$49/mo for 1,000 credits
PlacidOwn editorMulti-page PDF (2 credits/page)API; MCP listed as integration; community MCP serverBasic 500 credits; prices not shown; nonprofit discount on request
CreatomateOwn editorImages and videoOfficial MCP api.creatomate.com/mcpEssential 2,000 credits; 1 credit/image; 50 free credits
RenderForm, AbyssaleOwn editorsAbyssale supports multi-format "design sets"APIs, ZapierNot checked in detail
FigmaNativeFrames per slideFigma MCP write-to-canvas (use_figma), beta, needs Full seat on paid plan; free during betaFigma Professional seat
Code: HTML/CSS → PNGn/a (rebuild template in HTML once)Yes, one HTML per slide or one page with N sectionsClaude edits JSON/Markdown, script renders with Playwright page.screenshot or Satori / @vercel/ogFree

Notes:

  • Templated and Orshot are the most direct "keep our Canva design, make it an API" routes. Import fidelity (fonts, effects) is a marketing claim; test with the real template.
  • Pricing pages are vendor-sourced; numbers above are as fetched 2026-10-20.
  • Code route: most deterministic and cheapest, and Claude is good at it, but someone has to rebuild the template as HTML/CSS once, and non-technical teammates can't tweak it in Canva. Satori supports only a subset of CSS (flexbox, no grid); Playwright renders full CSS and web fonts.
  • Figma write-to-canvas is beta and seat-gated; only worth it if the team designs in Figma, which it doesn't.

3. Video / clips / audiograms (template-fill angle)

  • Creatomate: templates with named elements; render API takes modifications (text, media URLs); official MCP. Good for audiograms (waveform element) and quote-over-video clips. ~14 credits per 720p minute.
  • Remotion: React components as video templates; pass props (quote, audio file, captions) → render locally or on Lambda (~$0.10/min 720p compute). Free for individuals and very small companies; company licence otherwise (check remotion.pro). Fully code; Claude can write it.
  • Opus Clip / Riverside Magic Clips / Descript: template fill is via brand templates / brand themes set once in the UI (captions style, fonts, logo, intro/outro) and applied automatically to every clip. AI picks the clip; the template keeps the look. No confirmed public API for applying templates in Opus or Riverside; treat as human-in-the-loop tools. Descript has layouts/templates in-app (not verified this session).

Route A (try first): Canva MCP edit-in-place on a copy

  1. In Canva, duplicate the existing carousel template. Replace live text with tokens ({{TITLE}}, {{S2}}, {{S3}}, …, {{CTA}}).
  2. In Claude (Canva connector on), prompt: "Open design X copy. Using only find_and_replace_text, replace these tokens with this text: … Do not move, resize or reformat anything. Show me thumbnails before committing." Then commit and export-design as PNG.
  3. Pass/fail: no element moved; fonts kept; text fits boxes; PNGs downloadable. Time it and note tokens used vs. the old generate-from-scratch flow.

Route B: Autofill on the Nonprofits plan (MCP or Connect API)

  1. Publish the quote-card design as a brand template; with the Data autofill app name fields QUOTE, AUTHOR, SOURCE.
  2. Ask Claude: "search-brand-templates, then autofill-design template Y with QUOTE=…, AUTHOR=…". If the MCP refuses (Enterprise-only), fall back to a 30-line script against POST /autofills (Connect docs say Nonprofits qualifies), or to Bulk Create with a Claude-written CSV.
  3. Pass/fail: new design created per call with fields filled and nothing else changed; export works.

Route C (fallback / scale): Templated.io or Orshot, or HTML→PNG

  • Templated/Orshot: import the Canva template via share link on the free tier (50 / 100 credits), connect the MCP to Claude, render a 6-slide carousel from a slides array. Pass/fail: import fidelity (fonts, spacing) good enough without manual rework.
  • HTML→PNG: Claude rebuilds the quote card in HTML/CSS once; a script reads cards.yaml and screenshots 1080×1350 PNGs with Playwright. Pass/fail: matches brand visually; 10 cards render in under a minute.

Verified vs. claimed

  • Verified in official docs: Canva MCP tool list and transaction flow; Connect API autofill plan list (Pro/Teams/Nonprofits/Enterprise), field types, rate limit; Bulk Create plans; Nonprofits = Pro features for up to 50; Figma write-to-canvas seat rules; Creatomate MCP endpoint; Templated/Orshot/Placid/Creatomate pricing pages.
  • Secondary / unverified: exact perform-editing-operations operation names (from an OpenAI-plugins skill mirror); MCP autofill "Enterprise only" (Canva marketing page, 403 to fetch, via search snippets); Templated/Orshot Canva import fidelity; Bannerbear pricing (third-party); Remotion licence terms.
  • Untested by us: everything in section 4.
Built with LogoFlowershow