<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Slidler Blog]]></title><description><![CDATA[Slidler Blog]]></description><link>https://slidler.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Fri, 30 Oct 2026 05:32:24 GMT</lastBuildDate><atom:link href="https://slidler.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How to turn a blog post or YouTube video into a LinkedIn carousel (PDF) in under a minute]]></title><description><![CDATA[LinkedIn carousels are just PDFs. You upload a PDF as a document post, and LinkedIn shows each page as a swipeable slide. So "making a carousel" really…]]></description><link>https://slidler.hashnode.dev/how-to-turn-a-blog-post-or-youtube-video-into-a-linkedin-carousel-pdf-in-under-a-minute</link><guid isPermaLink="true">https://slidler.hashnode.dev/how-to-turn-a-blog-post-or-youtube-video-into-a-linkedin-carousel-pdf-in-under-a-minute</guid><category><![CDATA[LinkedIn]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[mcp]]></category><dc:creator><![CDATA[Slidler]]></dc:creator><pubDate>Fri, 23 Oct 2026 18:40:40 GMT</pubDate><content:encoded><![CDATA[<p>LinkedIn carousels are just PDFs. You upload a PDF as a document post, and LinkedIn shows each page as a swipeable slide. So "making a carousel" really means making a PDF with one idea per page at the right size.</p>
<p>We built <a href="https://slidler.com/?ref=hashnode">Slidler</a> to do that from content you already have: a blog post, an article, a YouTube video or plain text. This post shows the 60-second browser flow, then the developer side: a public API you can call with curl and an MCP server you can plug into an AI assistant.</p>
<h2>What you get</h2>
<ul>
<li><strong>Size:</strong> 1080x1350 pixels (4:5 portrait), which takes up the most room in the mobile feed. More on this in our <a href="https://slidler.com/linkedin-carousel-size/?ref=hashnode">LinkedIn carousel size guide</a>.</li>
<li><strong>Exports:</strong> a PDF for LinkedIn, or PNGs for an Instagram carousel.</li>
<li><strong>No account:</strong> no sign-up, email or payment, and no export cap.</li>
<li><strong>Branding:</strong> every export carries a small "made with slidler.com" line.</li>
</ul>
<p>One honest note on how it works: Slidler is not an AI writer. A rule-based splitter builds the slides from the source's own headings and sentences, so nothing gets invented. That's the right tool when you want your own words on the slides. If you want a model to rewrite your content into punchy hooks, use a chatbot first, then paste its text in.</p>
<h2>The browser flow (under a minute)</h2>
<ol>
<li>Open the <a href="https://slidler.com/?ref=hashnode">carousel maker</a>.</li>
<li>Paste one of these:<ul>
<li><strong>A blog post or article URL.</strong> Slidler pulls the headings and key sentences.</li>
<li><strong>A YouTube link.</strong> Watch pages, youtu.be links and Shorts all work. Slidler reads the video's captions when they're available and falls back to the description when they aren't. See <a href="https://slidler.com/youtube-to-carousel/?ref=hashnode">YouTube to carousel</a>.</li>
<li><strong>Plain text,</strong> such as notes, a draft or a newsletter issue.</li>
</ul>
</li>
<li>Pick how many slides you want (6–10), add your handle and click <strong>Make my carousel</strong>.</li>
<li>Edit any slide's text in the browser and choose one of the 6 templates.</li>
<li>Click <strong>Download PDF (LinkedIn)</strong>.</li>
</ol>
<p>To post it, start a new LinkedIn post, add a document, upload the PDF and give it a title. The full walkthrough is in <a href="https://slidler.com/how-to-post-a-carousel-on-linkedin/?ref=hashnode">how to post a carousel on LinkedIn</a>.</p>
<p>A few tips that matter more than the tool:</p>
<ul>
<li><strong>One idea per slide.</strong> If a slide needs two sentences to make sense, split it.</li>
<li><strong>Fix the cover.</strong> The first slide decides whether anyone swipes, so rewrite its headline yourself.</li>
<li><strong>Credit the source.</strong> If you're adapting someone else's post or video, link to it in your post text.</li>
</ul>
<h2>The developer angle: one GET request</h2>
<p>The same engine is available as a public HTTP API. You don't need an API key. It takes exactly one of <code>text</code> or <code>url</code>, plus an optional <code>n</code> for the number of point slides (clamped to 6–8):</p>
<pre><code class="language-bash">curl -s -G https://slidler.com/api/v1/carousel \
  --data-urlencode "url=https://en.wikipedia.org/wiki/Carousel" \
  --data-urlencode "n=6"
</code></pre>
<p>The response is JSON with the slides and a temporary PDF link (shortened here):</p>
<pre><code class="language-json">{
  "title": "Carousel - Wikipedia",
  "kind": "url",
  "slides": [
    {"k": "cover", "h": "Carousel", "b": "A double-decker carousel in Milton Keynes"},
    {"k": "point", "h": "", "b": "A carrousel tournament organized in the Tuileries Palace courtyard by Louis XIV in 1662 ..."},
    {"k": "cta", "h": "Found this useful?", "b": "Follow for more, and save this post."}
  ],
  "warnings": [],
  "n": 6,
  "point_count": 6,
  "page_count": 8,
  "pdf": {
    "url": "https://slidler.com/api/v1/pdf/&lt;id&gt;.pdf",
    "expires_at": "...",
    "mime_type": "application/pdf"
  }
}
</code></pre>
<p>For pasted text, send <code>text</code> (at least 40 non-whitespace characters, up to 1800 bytes) and an optional <code>title</code>:</p>
<pre><code class="language-bash">curl -s -G https://slidler.com/api/v1/carousel \
  --data-urlencode "text=Good carousels share one idea per slide. Keep each sentence short and concrete. End with a useful action for your reader." \
  --data-urlencode "title=Better carousels"
</code></pre>
<p>Things worth knowing before you build on it:</p>
<ul>
<li><strong>PDFs expire after 15 minutes.</strong> Download the file right away, or call the API again to make a new one.</li>
<li><strong>There are rate limits.</strong> Creation is limited per IP (10 requests a minute, with a small burst). You'll get a 429 with <code>Retry-After</code> when you hit it.</li>
<li><strong>Unknown parameters are rejected,</strong> so don't tack extra query strings onto API calls.</li>
<li><strong>Short sources make short decks.</strong> If the source has fewer sentences than <code>n</code>, you get fewer slides and a warning in <code>warnings</code>.</li>
<li><strong>Text goes in the query string,</strong> so it can show up in logs along the way. Don't send anything private.</li>
</ul>
<p>The full contract, including errors, is in <a href="https://slidler.com/openapi.json?ref=hashnode">openapi.json</a>.</p>
<h2>Add it to your AI assistant (MCP)</h2>
<p>Slidler also runs a remote MCP server at <code>https://slidler.com/mcp</code>. It uses Streamable HTTP and needs no auth. It exposes one tool, <code>create_carousel</code>, which takes a <code>source</code> (a URL or text), an optional <code>title</code> and an optional <code>n</code>. It returns the slide JSON and a PDF link, so you can ask your assistant to "turn this article into a LinkedIn carousel" and get a downloadable file back.</p>
<p>In a client that reads an <code>mcpServers</code> config (Cursor, for example):</p>
<pre><code class="language-json">{
  "mcpServers": {
    "slidler": { "url": "https://slidler.com/mcp" }
  }
}
</code></pre>
<p>In Claude Code:</p>
<pre><code class="language-bash">claude mcp add --transport http slidler https://slidler.com/mcp
</code></pre>
<p>Any client that supports remote Streamable HTTP servers should work the same way. Point it at the URL and the tool shows up.</p>
<h2>Limits, honestly</h2>
<ul>
<li>Slidler doesn't schedule or publish posts. You upload the PDF yourself.</li>
<li>There's no PDF file upload. If your source is a PDF, paste its text instead.</li>
<li>Slides are text-only for now, with no images from the source.</li>
<li>Videos without captions fall back to the description, which may be thin. In that case, paste your own notes.</li>
<li>The branding line can't be removed.</li>
</ul>
<p>If that fits how you work, try it on your last blog post or video at <a href="https://slidler.com/?ref=hashnode">slidler.com</a>. If something breaks on a link you paste, tell us in the comments. We read them.</p>
<p><em>Written by the Slidler team.</em></p>
]]></content:encoded></item></channel></rss>