<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Slidura — Your PowerPoint template, filled by your AI agent on Slidura</title><link>https://slidura.com/</link><description>Recent content in Slidura — Your PowerPoint template, filled by your AI agent on Slidura</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Mon, 01 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://slidura.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Automate PowerPoint proposals</title><link>https://slidura.com/use-cases/automate-powerpoint-proposals/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/use-cases/automate-powerpoint-proposals/</guid><description>&lt;h1 id="automate-powerpoint-proposals"&gt;Automate PowerPoint proposals&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;(TODO: long-form landing page for the consultant ICP. The &amp;ldquo;stop being a
copy-paste machine&amp;rdquo; angle. Before/after screenshots. CTA to /pricing/ and
/docs/getting-started/first-deck-in-10-minutes/.)&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Charts</title><link>https://slidura.com/docs/content/charts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/content/charts/</guid><description>&lt;h1 id="charts"&gt;Charts&lt;/h1&gt;
&lt;p&gt;Place data-driven native charts into your PowerPoint slides. The template owns
the chart type and styling; your fill supplies the data.&lt;/p&gt;
&lt;h2 id="how-charts-work"&gt;How charts work&lt;/h2&gt;
&lt;p&gt;When Slidura scans a template, any existing chart shape becomes a &lt;code&gt;chart&lt;/code&gt; field in
the catalog. The catalog records the chart type (bar, line, pie, …), the number of
series, and the category labels — the &lt;strong&gt;shape signature&lt;/strong&gt;. Your fill provides new
categories and series values; the build patches the chart&amp;rsquo;s data caches and
embedded workbook in-place without touching the template&amp;rsquo;s colours, data labels,
or number formats.&lt;/p&gt;</description></item><item><title>Connect Claude Desktop</title><link>https://slidura.com/docs/mcp/connect-claude-desktop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/mcp/connect-claude-desktop/</guid><description>&lt;h1 id="connect-claude-desktop"&gt;Connect Claude Desktop&lt;/h1&gt;
&lt;p&gt;One-paste setup, plus troubleshooting for the things that go wrong.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A Slidura account — access is by private beta invitation. &lt;a href="mailto:hello@slidura.com?subject=Slidura%20private%20beta%20access"&gt;Request access&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;An API key — account dropdown → API keys → New. &lt;strong&gt;Copy it now&lt;/strong&gt;; it is shown once. Keys carry scopes: &lt;code&gt;read&lt;/code&gt;, &lt;code&gt;write&lt;/code&gt;, &lt;code&gt;delete&lt;/code&gt;, &lt;code&gt;build&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://claude.ai/download"&gt;Claude Desktop&lt;/a&gt; installed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="add-the-server"&gt;Add the server&lt;/h2&gt;
&lt;p&gt;Open &lt;code&gt;claude_desktop_config.json&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;macOS:&lt;/strong&gt; &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows:&lt;/strong&gt; &lt;code&gt;%APPDATA%\Claude\claude_desktop_config.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Add (or merge into) the &lt;code&gt;mcpServers&lt;/code&gt; block:&lt;/p&gt;</description></item><item><title>First deck in 10 minutes</title><link>https://slidura.com/docs/getting-started/first-deck-in-10-minutes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/getting-started/first-deck-in-10-minutes/</guid><description>&lt;h1 id="first-deck-in-10-minutes"&gt;First deck in 10 minutes&lt;/h1&gt;
&lt;p&gt;The fastest path through the whole Slidura loop: sign in → upload → catalog
→ fill → build → download.&lt;/p&gt;
&lt;h2 id="before-you-start"&gt;Before you start&lt;/h2&gt;
&lt;p&gt;Slidura is in private beta. If you don&amp;rsquo;t have access yet, email
&lt;a href="mailto:hello@slidura.com?subject=Slidura%20private%20beta%20access"&gt;hello@slidura.com&lt;/a&gt;
to request it. Once accepted, sign in at
&lt;a href="https://app.slidura.com/login"&gt;app.slidura.com/login&lt;/a&gt; via email magic-link
or Google.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll also need a &lt;code&gt;.pptx&lt;/code&gt; template to try. If you don&amp;rsquo;t have one, starter
templates are available in the templates home — no upload required.&lt;/p&gt;</description></item><item><title>Templates and versions</title><link>https://slidura.com/docs/concepts/templates-and-versions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/concepts/templates-and-versions/</guid><description>&lt;h1 id="templates-and-versions"&gt;Templates and versions&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ This page is a stub — full write-up coming soon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A named handle and the immutable &lt;code&gt;.pptx&lt;/code&gt; blobs under it.&lt;/p&gt;</description></item><item><title>The fill builder</title><link>https://slidura.com/docs/web/the-fill-builder/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/web/the-fill-builder/</guid><description>&lt;h1 id="the-fill-builder"&gt;The fill builder&lt;/h1&gt;
&lt;p&gt;The fill builder is the editing surface for a &lt;code&gt;created&lt;/code&gt; build, reached at
&lt;code&gt;/builds/{id}&lt;/code&gt;. It is structured into three tabs: &lt;strong&gt;Assistant&lt;/strong&gt;, &lt;strong&gt;Slides&lt;/strong&gt;,
and &lt;strong&gt;Values&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="slide-thumbnails-and-field-locator"&gt;Slide thumbnails and field locator&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;Slides&lt;/strong&gt; tab shows a thumbnail for each slide. When a PDF export was
uploaded with the template, each thumbnail is the real slide image with
filled values overlaid. If no PDF was uploaded, the fallback is a
server-rendered SVG mock (see below).&lt;/p&gt;</description></item><item><title>Fill a PowerPoint template via API</title><link>https://slidura.com/use-cases/fill-powerpoint-template-via-api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/use-cases/fill-powerpoint-template-via-api/</guid><description>&lt;h1 id="fill-a-powerpoint-template-via-api"&gt;Fill a PowerPoint template via API&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;(TODO: long-form landing for the automation-engineer ICP. The &lt;code&gt;/api/v1&lt;/code&gt;
shape, an end-to-end curl walkthrough, error handling, idempotency notes.)&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Tables</title><link>https://slidura.com/docs/content/tables/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/content/tables/</guid><description>&lt;h1 id="tables"&gt;Tables&lt;/h1&gt;
&lt;p&gt;Place tabular data into PowerPoint tables. The template owns the table style and
banding; your fill drives the row and column count.&lt;/p&gt;
&lt;h2 id="how-tables-work"&gt;How tables work&lt;/h2&gt;
&lt;p&gt;When Slidura scans a template, any existing table shape becomes a &lt;code&gt;table&lt;/code&gt; field in
the catalog. The catalog records the current row count, column count, and the
table style ID. At build time the engine &lt;strong&gt;reshapes&lt;/strong&gt; the template table — adding
or removing rows and columns to match your data — then writes cell content. The
table&amp;rsquo;s style, banding, and header formatting are never touched, so the output
stays on-brand regardless of how many rows your data has.&lt;/p&gt;</description></item><item><title>The build assistant</title><link>https://slidura.com/docs/web/the-build-assistant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/web/the-build-assistant/</guid><description>&lt;h1 id="the-build-assistant"&gt;The build assistant&lt;/h1&gt;
&lt;p&gt;The build assistant is an optional hosted chat available on the &lt;strong&gt;Assistant&lt;/strong&gt;
tab of a &lt;code&gt;created&lt;/code&gt; build. It helps you draft the working fill by reading the
template brief, searching your assets, and writing suggested values — using
the same draft-validation path as any external agent or API call.&lt;/p&gt;
&lt;div class="callout callout-note"&gt;
 &lt;span class="callout-icon"&gt;&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"&gt;&lt;circle cx="12" cy="12" r="10"/&gt;&lt;path d="M12 16v-4M12 8h.01"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;div class="callout-body"&gt;The assistant is server-side AI and requires &lt;code&gt;GOOGLE_API_KEY&lt;/code&gt; to be
configured on the Slidura instance you are using. If the tab is absent, the
assistant is not available on that instance.
 &lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="how-it-works"&gt;How it works&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;You type a message on the Assistant tab — typically a brief description of
the deck you want (topic, audience, key points).&lt;/li&gt;
&lt;li&gt;The assistant reads the annotated catalog (the field names, descriptions,
and agent hints you set during annotation) and the current working fill,
then calls a read-only asset search tool to find relevant images, charts,
or other media from your library.&lt;/li&gt;
&lt;li&gt;It replies with a chat message and, when it has enough information, writes
a complete updated fill into the build. That fill goes through the same
draft validation as any other write — the assistant cannot bypass it.&lt;/li&gt;
&lt;li&gt;When the assistant needs more information it may ask &lt;strong&gt;structured
questions&lt;/strong&gt;, rendered as an inline answer form in the chat thread. Fill in
the answers and submit the form to continue.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="honest-caveats"&gt;Honest caveats&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No streaming.&lt;/strong&gt; Each turn is a synchronous round-trip. Replies appear
after the full response is ready.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conversations persist per build.&lt;/strong&gt; Closing the tab and returning later
resumes the same thread. Conversations are scoped to one build and are not
shared across builds.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The human presses Build deck.&lt;/strong&gt; The assistant only edits the working fill;
it never starts the build engine. Review the Slides and Values tabs before
clicking &lt;em&gt;Build deck&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Server-side AI is opt-in.&lt;/strong&gt; Simply not using the Assistant tab sends no
data to the assistant&amp;rsquo;s model provider. The fill builder (Slides and Values
tabs) works entirely without it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rate-limited.&lt;/strong&gt; Turns are rate-limited per user to prevent runaway spend.
&lt;!-- TODO: verify exact rate limit value exposed to users --&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-underlying-model"&gt;The underlying model&lt;/h2&gt;
&lt;p&gt;The assistant uses Gemini (default &lt;code&gt;gemini-2.5-flash&lt;/code&gt;, configurable via
&lt;code&gt;ASSISTANT_MODEL&lt;/code&gt;). See
&lt;a href="https://github.com/slidura/slidura"&gt;specs/user-experience/assistant-spec-v1.md&lt;/a&gt;
for the full technical spec.&lt;/p&gt;</description></item><item><title>The catalog</title><link>https://slidura.com/docs/concepts/the-catalog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/concepts/the-catalog/</guid><description>&lt;h1 id="the-catalog"&gt;The catalog&lt;/h1&gt;
&lt;p&gt;A &lt;strong&gt;catalog&lt;/strong&gt; is Slidura&amp;rsquo;s machine-readable view of a &lt;code&gt;.pptx&lt;/code&gt;: every slide,
every fillable field, in reading order. It&amp;rsquo;s produced once per template
version by a background &lt;code&gt;catalog&lt;/code&gt; job and stored as JSON.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(TODO: full write-up — full vs compact, what counts as a field, how
&lt;code&gt;pptx_field_id&lt;/code&gt; differs from the editable &lt;code&gt;field_id&lt;/code&gt;, where the JSON lives.)&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Tool reference</title><link>https://slidura.com/docs/mcp/tool-reference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/mcp/tool-reference/</guid><description>&lt;h1 id="tool-reference"&gt;Tool reference&lt;/h1&gt;
&lt;p&gt;Slidura exposes 42 MCP tools across eight areas. All tools require a valid API key
(account dropdown → API keys). Individual tools note the scope they require where it
differs from the default &lt;code&gt;read&lt;/code&gt; scope.&lt;/p&gt;
&lt;h2 id="recommended-agent-loop"&gt;Recommended agent loop&lt;/h2&gt;
&lt;p&gt;The recommended sequence for producing a finished deck:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;list_templates&lt;/code&gt; — pick a template and note its &lt;code&gt;catalog_id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_catalog&lt;/code&gt; — read the annotated field brief and theme palette.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;create_build&lt;/code&gt; — open a draftable build (no credit spent yet).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;(optional)&lt;/em&gt; create media assets (&lt;code&gt;create_chart&lt;/code&gt;, &lt;code&gt;create_diagram&lt;/code&gt;, etc.) and use the returned &lt;code&gt;@kind:&amp;lt;id&amp;gt;&lt;/code&gt; sentinels as field values.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;update_build_fill&lt;/code&gt; — write or revise the working fill (lenient validation; repeatable).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;start_build&lt;/code&gt; — validate, spend one credit, and enqueue. Raises with a checkout URL when the balance is zero.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_build_status&lt;/code&gt; — poll until &lt;code&gt;status&lt;/code&gt; is &lt;code&gt;&amp;quot;completed&amp;quot;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_build_result&lt;/code&gt; — receive a short-lived signed download URL for the &lt;code&gt;.pptx&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;One credit is spent per &lt;code&gt;start_build&lt;/code&gt; call. If the build fails the credit is refunded automatically.&lt;/p&gt;</description></item><item><title>Upload your template</title><link>https://slidura.com/docs/getting-started/upload-your-template/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/getting-started/upload-your-template/</guid><description>&lt;h1 id="upload-your-template"&gt;Upload your template&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ This page is a stub — full write-up coming soon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What makes a good &lt;code&gt;.pptx&lt;/code&gt; for Slidura.&lt;/p&gt;</description></item><item><title>Variables and typed values</title><link>https://slidura.com/docs/templates/variables-and-typed-values/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/templates/variables-and-typed-values/</guid><description>&lt;h1 id="variables-and-typed-values"&gt;Variables and typed values&lt;/h1&gt;
&lt;p&gt;Annotation turns a raw catalog into a reusable product. Two tools drive that
transformation: &lt;strong&gt;per-field typed values&lt;/strong&gt; (defaults, choices, and a strict/suggestion
flag) and &lt;strong&gt;head variables&lt;/strong&gt; (catalog-level &lt;code&gt;{{name}}&lt;/code&gt; placeholders interpolated once
at submit).&lt;/p&gt;
&lt;h2 id="per-field-defaults-and-choice-lists"&gt;Per-field defaults and choice lists&lt;/h2&gt;
&lt;p&gt;Every field in the &lt;strong&gt;Variables&lt;/strong&gt; view of the template workspace can carry:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Default value&lt;/strong&gt; — the text (or ref sentinel like &lt;code&gt;@icon:starter/star&lt;/code&gt;) used when a
caller omits that field from the fill. Explicit values always win; hidden fields never
receive a default.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Choices&lt;/strong&gt; — an ordered list of allowed values. Up to 50 choices, each non-empty and
unique. When a caller sends a string value outside the list, the build is rejected with
a validation error that names the field and its allowed values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strict vs suggestion&lt;/strong&gt; — a field with choices either enforces the list strictly or
treats it as a suggestion set for the fill builder UI. &lt;!-- TODO: verify which flag name surfaces in the web UI --&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the fill builder, a choices-bearing field renders as a &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt;. The first option is
&amp;ldquo;use default&amp;rdquo; (or &amp;ldquo;keep template content&amp;rdquo;) with an empty value; omitting the field is
equivalent to selecting the default. A text field with a default shows it as a placeholder.&lt;/p&gt;</description></item><item><title>Annotate the catalog</title><link>https://slidura.com/docs/getting-started/annotate-the-catalog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/getting-started/annotate-the-catalog/</guid><description>&lt;h1 id="annotate-the-catalog"&gt;Annotate the catalog&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ This page is a stub — full write-up coming soon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Turn auto-named fields into a great agent brief.&lt;/p&gt;</description></item><item><title>Annotations as the agent brief</title><link>https://slidura.com/docs/concepts/annotations-as-the-agent-brief/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/concepts/annotations-as-the-agent-brief/</guid><description>&lt;h1 id="annotations-as-the-agent-brief"&gt;Annotations as the agent brief&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ This page is a stub — full write-up coming soon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The human-in-the-loop quality step that turns auto-named fields into a clear brief for your agent.&lt;/p&gt;</description></item><item><title>Images</title><link>https://slidura.com/docs/content/images/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/content/images/</guid><description>&lt;h1 id="images"&gt;Images&lt;/h1&gt;
&lt;p&gt;Upload a raster or vector image once; reference it from any fill. The build
embeds it into &lt;code&gt;image_N&lt;/code&gt; picture-frame fields in the finished deck.&lt;/p&gt;
&lt;h2 id="how-images-work"&gt;How images work&lt;/h2&gt;
&lt;p&gt;Slidura&amp;rsquo;s scanner detects picture-frame shapes in a template and records them as
&lt;code&gt;image&lt;/code&gt; fields in the catalog. At build time the filler replaces the placeholder
with your image, cropped and scaled to fill the frame exactly as PowerPoint would.&lt;/p&gt;
&lt;p&gt;Supported formats: PNG, JPG, GIF, SVG. Each file is validated on confirm
(magic-byte check, dimension cap, decompression-bomb guard) before being stored
privately in object storage.&lt;/p&gt;</description></item><item><title>Let Claude fill your deck over MCP</title><link>https://slidura.com/use-cases/let-claude-fill-your-deck-over-mcp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/use-cases/let-claude-fill-your-deck-over-mcp/</guid><description>&lt;h1 id="let-claude-fill-your-deck-over-mcp"&gt;Let Claude fill your deck over MCP&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;(TODO: long-form landing for the AI-forward / MCP-directory crowd. The
&amp;ldquo;intelligence on your machine&amp;rdquo; architecture, the tool suite, the one-paste
config, a worked Claude conversation.)&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Published fill endpoints</title><link>https://slidura.com/docs/templates/published-fill-endpoints/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/templates/published-fill-endpoints/</guid><description>&lt;h1 id="published-fill-endpoints"&gt;Published fill endpoints&lt;/h1&gt;
&lt;p&gt;A published fill endpoint lets an external system POST plain data and receive a finished
deck — no Slidura account, no fill builder, no MCP client. You publish a draft from a
template, receive a capability token, and hand the URL to whatever system produces the
data.&lt;/p&gt;
&lt;h2 id="how-it-works"&gt;How it works&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In the template workspace, open the &lt;strong&gt;Usage&lt;/strong&gt; tab and create an endpoint. Give it a
name, optionally set a callback URL and a monthly build cap, then click &lt;strong&gt;Publish&lt;/strong&gt;.
Publishing snapshots your current draft — the slide selection, order, and any
pre-filled values — as the endpoint&amp;rsquo;s &lt;code&gt;default_fill&lt;/code&gt;. The token (&lt;code&gt;sfe_…&lt;/code&gt;) is shown
once; copy it.&lt;/p&gt;</description></item><item><title>Signed download URLs</title><link>https://slidura.com/docs/mcp/signed-download-urls/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/mcp/signed-download-urls/</guid><description>&lt;h1 id="signed-download-urls"&gt;Signed download URLs&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ This page is a stub — full write-up coming soon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;How the finished &lt;code&gt;.pptx&lt;/code&gt; leaves the MCP channel.&lt;/p&gt;</description></item><item><title>Build and download</title><link>https://slidura.com/docs/getting-started/build-and-download/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/getting-started/build-and-download/</guid><description>&lt;h1 id="build-and-download"&gt;Build and download&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ This page is a stub — full write-up coming soon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Submit a fill.json, watch the job, download the deck.&lt;/p&gt;</description></item><item><title>Design palette</title><link>https://slidura.com/docs/templates/design-palette/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/templates/design-palette/</guid><description>&lt;h1 id="design-palette"&gt;Design palette&lt;/h1&gt;
&lt;p&gt;Every &lt;code&gt;.pptx&lt;/code&gt; embeds a PowerPoint theme: a color scheme of ten named slots and a major/minor
font pair. Slidura reads this palette once at catalog time and uses it as the single source
of truth for all auto-derived color schemes across your template.&lt;/p&gt;
&lt;h2 id="what-the-palette-contains"&gt;What the palette contains&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Slot&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dk1&lt;/code&gt;, &lt;code&gt;lt1&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Primary text / background pair&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;dk2&lt;/code&gt;, &lt;code&gt;lt2&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Secondary text / background pair&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;accent1&lt;/code&gt; – &lt;code&gt;accent6&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Brand accent colors&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Plus &lt;code&gt;major_font&lt;/code&gt; (headings) and &lt;code&gt;minor_font&lt;/code&gt; (body text).&lt;/p&gt;</description></item><item><title>Icons</title><link>https://slidura.com/docs/content/icons/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/content/icons/</guid><description>&lt;h1 id="icons"&gt;Icons&lt;/h1&gt;
&lt;p&gt;Replace template icon carriers with glyphs from any SVG icon pack. Icons land
in the finished deck as native vector shapes — no raster fallback.&lt;/p&gt;
&lt;h2 id="how-icons-work"&gt;How icons work&lt;/h2&gt;
&lt;p&gt;The scanner detects three kinds of icon carrier in a template: SVG-picture
shapes, textless autoshapes used as placeholder icons, and icon-font glyph runs.
Each becomes an &lt;code&gt;icon&lt;/code&gt; field in the catalog. At build time the filler swaps the
carrier with the SVG geometry for the chosen glyph, placed through the same
native-shape pipeline (&lt;code&gt;svgdeck&lt;/code&gt;) that procedural arts use.&lt;/p&gt;</description></item><item><title>Reference agent</title><link>https://slidura.com/docs/mcp/reference-agent/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/mcp/reference-agent/</guid><description>&lt;h1 id="reference-agent"&gt;Reference agent&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ This page is a stub — full write-up coming soon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A PydanticAI script that runs the loop.&lt;/p&gt;</description></item><item><title>The fill.json schema</title><link>https://slidura.com/docs/concepts/the-fill-json-schema/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/concepts/the-fill-json-schema/</guid><description>&lt;h1 id="the-filljson-schema"&gt;The fill.json schema&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ This page is a stub — full write-up coming soon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The shape your agent produces to fill a template.&lt;/p&gt;</description></item><item><title>Builds and credits</title><link>https://slidura.com/docs/concepts/builds-and-credits/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/concepts/builds-and-credits/</guid><description>&lt;h1 id="builds-and-credits"&gt;Builds and credits&lt;/h1&gt;
&lt;p&gt;A &lt;strong&gt;build&lt;/strong&gt; is the act of running the fill engine against a template: it reads
a &lt;code&gt;fill.json&lt;/code&gt;, resolves every field and variable, and produces a finished
&lt;code&gt;.pptx&lt;/code&gt;. Each successful build consumes one credit.&lt;/p&gt;
&lt;h2 id="what-costs-a-credit"&gt;What costs a credit&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;One successful build = one credit.&lt;/strong&gt; Credits are spent when a build moves
to &lt;code&gt;started&lt;/code&gt; (i.e., when you press &lt;em&gt;Build deck&lt;/em&gt; in the web UI or call
&lt;code&gt;POST /builds/{id}/start&lt;/code&gt; via the API).&lt;/li&gt;
&lt;li&gt;If the build &lt;strong&gt;fails&lt;/strong&gt;, the credit is automatically refunded — you only pay
for what you receive.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-is-free"&gt;What is free&lt;/h2&gt;
&lt;p&gt;Uploading templates, running the catalog scan, annotating fields, editing the
working fill, and creating draft builds are all free. You can iterate on a
fill as many times as you like before pressing &lt;em&gt;Build deck&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Diagrams</title><link>https://slidura.com/docs/content/diagrams/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/content/diagrams/</guid><description>&lt;h1 id="diagrams"&gt;Diagrams&lt;/h1&gt;
&lt;p&gt;Place Mermaid diagrams into your slides in three modes: a static image, a
step-by-step Morph animation, or fully editable native shapes.&lt;/p&gt;
&lt;h2 id="three-modes"&gt;Three modes&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Mode&lt;/th&gt;
 &lt;th&gt;Sentinel&lt;/th&gt;
 &lt;th&gt;Output&lt;/th&gt;
 &lt;th&gt;Editable in PowerPoint&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Static&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;@diagram:&amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;One PNG placed as a picture&lt;/td&gt;
 &lt;td&gt;No&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Morph animation&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;@diagram-morph:&amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;One still slide per cumulative step, linked by a Morph transition&lt;/td&gt;
 &lt;td&gt;No (images)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Native shapes&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;@diagram-native:&amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Autoshapes, connectors, and text transcoded from SVG&lt;/td&gt;
 &lt;td&gt;Yes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;All three modes use the same &lt;code&gt;domain/diagram&lt;/code&gt; feature and the same API/MCP
surface; the mode is set when you create the diagram.&lt;/p&gt;</description></item><item><title>Code blocks</title><link>https://slidura.com/docs/content/code-blocks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/content/code-blocks/</guid><description>&lt;h1 id="code-blocks"&gt;Code blocks&lt;/h1&gt;
&lt;p&gt;Place syntax-highlighted, animated code reveals into your slides. Syntax
highlighting uses Pygments; animation uses PowerPoint Morph or native click builds.&lt;/p&gt;
&lt;h2 id="two-animation-engines"&gt;Two animation engines&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Engine&lt;/th&gt;
 &lt;th&gt;How it works&lt;/th&gt;
 &lt;th&gt;Slides produced&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;morph&lt;/code&gt; (default)&lt;/td&gt;
 &lt;td&gt;One slide per reveal step; identical code box, only highlight colours change; Morph cross-fades them&lt;/td&gt;
 &lt;td&gt;One per step&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;native&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;One slide; each step&amp;rsquo;s code box is revealed on click via a &lt;code&gt;&amp;lt;p:timing&amp;gt;&lt;/code&gt; tree&lt;/td&gt;
 &lt;td&gt;One&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Choose &lt;code&gt;morph&lt;/code&gt; for smooth animated transitions between steps. Choose &lt;code&gt;native&lt;/code&gt; for
an in-slide, click-to-reveal build that keeps everything on one slide.&lt;/p&gt;</description></item><item><title>The build lifecycle</title><link>https://slidura.com/docs/concepts/the-build-lifecycle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/concepts/the-build-lifecycle/</guid><description>&lt;h1 id="the-build-lifecycle"&gt;The build lifecycle&lt;/h1&gt;
&lt;p&gt;A build is the durable working object that carries both the fill you are
composing and the resulting &lt;code&gt;.pptx&lt;/code&gt;. It moves through a defined set of states
and is never silently deleted.&lt;/p&gt;
&lt;h2 id="states"&gt;States&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;State&lt;/th&gt;
 &lt;th&gt;What it means&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;created&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The fill is editable. The fill builder (or an API/MCP agent) can read and write the working fill. No credit has been spent.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;started&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The build engine is running. One credit has been reserved. The fill is now read-only.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;built&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The build succeeded. The &lt;code&gt;.pptx&lt;/code&gt; is available for download.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;failed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The build engine returned an error. The credit was automatically refunded. The build can be reopened.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;archived&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The build&amp;rsquo;s output file has been cleaned up; the fill is still kept. An archived build can be reopened or copied.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="transitions"&gt;Transitions&lt;/h2&gt;
&lt;div class="code-block"&gt;&lt;div class="code-wrap"&gt;
 &lt;button class="code-copy" type="button" aria-label="Copy" title="Copy"&gt;&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"&gt;&lt;rect width="14" height="14" x="8" y="8" rx="2"/&gt;&lt;path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/&gt;&lt;/svg&gt;&lt;/button&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;created ──start──► started ──success──► built ──archive──► archived
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ └──failure──► failed ──►──────►─┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── edit fill (PATCH /builds/{id}) — stays in created&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Start&lt;/strong&gt;: validates the fill, spends the credit, enqueues the job.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reopen&lt;/strong&gt;: moves a &lt;code&gt;built&lt;/code&gt;, &lt;code&gt;failed&lt;/code&gt;, or &lt;code&gt;archived&lt;/code&gt; build back to &lt;code&gt;created&lt;/code&gt;
with its fill intact so you can edit and re-run it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copy&lt;/strong&gt;: creates a new &lt;code&gt;created&lt;/code&gt; build pre-seeded with the source build&amp;rsquo;s
fill — useful for branching variations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Archive&lt;/strong&gt;: explicit archival any time from &lt;code&gt;built&lt;/code&gt; or &lt;code&gt;failed&lt;/code&gt;; also
triggered automatically by the scheduler after 7 days. The fill is always
kept; only the output file is removed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-buildsid-view"&gt;The &lt;code&gt;/builds/{id}&lt;/code&gt; view&lt;/h2&gt;
&lt;p&gt;The build view at &lt;code&gt;/builds/{id}&lt;/code&gt; switches its layout based on the current
state:&lt;/p&gt;</description></item><item><title>Procedural arts</title><link>https://slidura.com/docs/content/procedural-arts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/content/procedural-arts/</guid><description>&lt;h1 id="procedural-arts"&gt;Procedural arts&lt;/h1&gt;
&lt;p&gt;Procedural arts are Slidura&amp;rsquo;s replacement for SmartArt: structured data goes in,
a native PowerPoint diagram comes out. No AI, no external render service — the
geometry engine runs synchronously in pure Python.&lt;/p&gt;
&lt;h2 id="how-it-works"&gt;How it works&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;artdeck&lt;/code&gt; engine accepts a &lt;strong&gt;layout ID&lt;/strong&gt; and a &lt;strong&gt;data payload&lt;/strong&gt;, solves the
geometry, and emits an SVG built from theme tokens (&lt;code&gt;accent1&lt;/code&gt;, &lt;code&gt;neutral&lt;/code&gt;, etc.)
rather than literal colours. The &lt;code&gt;svgdeck&lt;/code&gt; pipeline then converts that SVG into
native PowerPoint shapes, picking up the template&amp;rsquo;s actual palette at build time.
The round-trip budget is under 100 ms; failures surface as validation errors, not
silently broken slides.&lt;/p&gt;</description></item><item><title>Components &amp; shortcodes</title><link>https://slidura.com/docs/components/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://slidura.com/docs/components/</guid><description>&lt;h1 id="components--shortcodes"&gt;Components &amp;amp; shortcodes&lt;/h1&gt;
&lt;p&gt;A reference page that exercises every layout element and shortcode the site
ships with. Use it as a copy-paste cheat sheet when writing docs and blog posts.&lt;/p&gt;
&lt;h2 id="callouts"&gt;Callouts&lt;/h2&gt;
&lt;div class="callout callout-note"&gt;
 &lt;span class="callout-icon"&gt;&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"&gt;&lt;circle cx="12" cy="12" r="10"/&gt;&lt;path d="M12 16v-4M12 8h.01"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;div class="callout-body"&gt;&lt;p class="callout-title"&gt;Note&lt;/p&gt;This is the default &lt;strong&gt;note&lt;/strong&gt; callout. It supports &lt;em&gt;markdown&lt;/em&gt; and &lt;code&gt;inline code&lt;/code&gt;.
 &lt;/div&gt;
&lt;/div&gt;

&lt;div class="callout callout-info"&gt;
 &lt;span class="callout-icon"&gt;&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"&gt;&lt;circle cx="12" cy="12" r="10"/&gt;&lt;path d="M12 16v-4M12 8h.01"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;div class="callout-body"&gt;An &lt;strong&gt;info&lt;/strong&gt; callout with no title.
 &lt;/div&gt;
&lt;/div&gt;

&lt;div class="callout callout-tip"&gt;
 &lt;span class="callout-icon"&gt;&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"&gt;&lt;path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"/&gt;&lt;path d="M9 18h6M10 22h4"/&gt;&lt;/svg&gt;&lt;/span&gt;
 &lt;div class="callout-body"&gt;&lt;p class="callout-title"&gt;Tip&lt;/p&gt;</description></item><item><title>Why Slidura fills templates instead of designing decks</title><link>https://slidura.com/blog/hello-slidura/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid>https://slidura.com/blog/hello-slidura/</guid><description>&lt;p&gt;Most AI deck tools start from a blank canvas and generate something new. That&amp;rsquo;s
great when you don&amp;rsquo;t have a brand — and a problem when you do. A
brand-approved template is the result of a long sign-off process, and &amp;ldquo;close
enough&amp;rdquo; is not good enough.&lt;/p&gt;
&lt;p&gt;Slidura takes the opposite stance: &lt;strong&gt;it fills, it doesn&amp;rsquo;t design.&lt;/strong&gt; You upload
the &lt;code&gt;.pptx&lt;/code&gt; your brand team already approved, and your own AI agent fills every
field over MCP. The geometry, fonts, and master slides come out pixel-identical
to what went in.&lt;/p&gt;</description></item></channel></rss>