Orshot Carousel: six slides, one call
A carousel is six images with the same layout and different words. That is a template render, not an image-editing job. The template holds the fonts, colors and text sizing once. Every post only sends six lines of copy and six background images. No canvas code, no font files.
What people ask for
- "Make a faceless TikTok slideshow for our habit app Loopday: 6 slides, a hook on the first, the app only on the last."
- "Turn this blog post into an Instagram carousel."
- "Write 30 slideshow hooks for a plant-care account and render the first 10 as drafts."
- "'Layout 1 or layout 2?' Make that slideshow with photos from our brand kit."
- "Which hooks got the most views this week? Write the next five from the winners."
- "Take the photos in my Drive folder and make a slideshow video with our track." This one is a video: see Slideshow as a video.
Setup
- Connect the Orshot MCP server at
https://mcp.orshot.com/full(OAuth, no key): https://orshot.com/docs/integrations/mcp-server.md. Headless jobs useORSHOT_API_KEYover REST. Theorshotskill covers both. - Find a carousel template:
orshot_list_studio_templateswith a search for "carousel". None? Create one (below). Already have it in Canva? The user imports it in Orshot Studio from a public share link, and each page comes in withpageN@keys: https://orshot.com/docs/importing-templates/import-from-canva.md. - Decide where it posts: Orshot social accounts (
orshot_list_social_accounts) or Postiz.
Music
- TikTok:
tiktokSettings: { autoAddMusic: true }asks TikTok to add its recommended music to the photo post, so no one has to open the app to add a sound. Over MCP it goes onorshot_publish_social_post(see Post it). Field: https://orshot.com/docs/publish/publish-from-api.md. - Instagram: Orshot has no music option for Instagram posts. Tell the user before you post instead of trying. If the post needs sound, make it a video (see Slideshow as a video).
The 6-slide formula
Slide 1 Hook, full sentence, biggest text, never split across slides
Slide 2 The problem the viewer has
Slide 3 The discovery or the turn
Slide 4 Proof 1 (number, screenshot, quote)
Slide 5 Proof 2 or the how
Slide 6 CTA (follow, link in bio, app name)
Hook rule: person + doubt or conflict + specific detail beats a feature line. "my trainer asked me to log a week of meals, she wasn't ready" beats "track calories in seconds". Do not name the product on slide 1.
Six is the default. A list gets one slide per point plus the cover and the CTA (5 mistakes is 7 slides), and a data update gets one number per slide. Two other formulas that keep working, each as its own template with its own page count:
- Question hook, 3 to 5 tips, CTA (5 to 7 slides).
- This or that: two options, and the viewer picks ("layout 1 or layout 2?").
Create the template once
- Load the
orshot-designskill for type, color and layout rules.orshot_plan_designwith the brief,job("tiktok slideshow with 5 tips"), the page size andpages(the slide count) returns the plan and the inside-slide system. Readorshot_get_design_spectopictemplate-jsononce per session (same content as https://orshot.com/docs/definitions/template-json.md) and topicsocial-packfor safe areas. - Pick the page size from a render preset, for example
instagram-post-portraitfor Instagram and LinkedIn ortiktok-videofor TikTok. Sizes: https://orshot.com/docs/api-reference/render-from-studio-template.md#smart-resize. - Build the pages: slide 1 is a cover, the inside slides share one layout, the last slide is the CTA.
- one text layer per page with
parameterId: "title", set to fit its box (https://orshot.com/docs/orshot-studio/text-modes.md); - one image layer per page with
parameterId: "bg_image", full bleed or framed; - more fields only where the format needs them, named the same on every page:
body,number,cost,time,cta; - fixed wording (page counters, "Swipe", labels) gets
parameterizable: false; - a scrim or a text box so the words read on any photo;
- a button is a shape with the text on top, because a text background only hugs the words;
- brand fonts and colors from
orshot_get_brand_kit, logo small on the last page only. Colors, fonts or photos the user names win over the kit and over any plan the server suggests. - TikTok (1080x1920): keep text out of the top 250px, the bottom 320px (caption) and the right 140px (buttons). Let a photo fill the bottom band so it is not empty.
- one text layer per page with
orshot_create_template_designwith all pages andincludeThumbnails: true. Name it "Carousel 6 (Instagram)" or "Carousel 6 (TikTok)". Fix what the thumbnails show with oneorshot_update_template_designcall. A design warning that the preview does not bear out (a shared texture counted as a repeated picture, a big slide number counted as a second headline) can stay; tell the user which ones you left.orshot_get_studio_template_modificationsreturns the exact render keys. On a multi-page template they carry the page prefix:page1@title,page1@bg_image,page2@title, and so on.
Template design runs over MCP. The REST create endpoint is Enterprise only: https://orshot.com/docs/api-reference/enterprise-template-create.md. Keep the template and reuse it for every post.
Render the carousel
REST body (https://orshot.com/docs/api-reference/render-from-studio-template.md):
curl -s -X POST https://api.orshot.com/v1/studio/render \
-H "Authorization: Bearer $ORSHOT_API_KEY" -H "Content-Type: application/json" \
-d '{
"templateId": 123,
"modifications": {
"page1@title": "nobody told me the 3pm slump was my breakfast",
"page1@bg_image": "https://.../1.jpg",
"page2@title": "I was eating 60g of sugar before 9am",
"page2@bg_image": "https://.../2.jpg",
"page3@title": "then I logged one week, every meal",
"page3@bg_image": "https://.../3.jpg",
"page4@title": "swapped the juice, kept the toast",
"page4@bg_image": "https://.../4.jpg",
"page5@title": "two weeks later the slump was gone",
"page5@bg_image": "https://.../5.jpg",
"page6@title": "the app is free, link in bio",
"page6@bg_image": "https://.../6.jpg"
},
"response": { "type": "url", "format": "png" }
}'
Over MCP, orshot_render_template takes the same templateId and modifications, with format as a flat argument instead of a response object. A multi-page render returns one URL per page, in page order.
Background images can come from the brand kit, stock search (orshot_search_stock_media), an image model the user already pays for, or the user's own files. Any public URL works. Use only images the user has the rights to: never download Pinterest pins or other accounts' posts to repost. Keep a log of the image URLs already used and skip them in the next batch.
Post it
Through Orshot, REST. Add publish to the render body. Each page becomes one image of the post.
"publish": {
"accounts": [7],
"content": "the hook, then hashtags",
"isDraft": true,
"tiktokSettings": { "autoAddMusic": true }
}
The render publish object reads isDraft and schedule.scheduledFor for timing; with neither it posts immediately. Full object: https://orshot.com/docs/publish/publish-from-api.md.
Through Orshot, MCP. Render with orshot_render_template, then orshot_publish_social_post with the page URLs as mediaUrls, accounts, content and status: "draft" (add tiktokSettings for TikTok music). The render only renders; posting is always this second call.
Keep it a draft until the user has seen the slides (orshot_get_social_post shows the post as a card). Then orshot_publish_social_draft, or schedule with orshot_update_social_post, status: "scheduled" and scheduledFor. No accounts connected yet? The user connects them in the dashboard (https://orshot.com/docs/publish/connect-account.md). It is a paid add-on: https://orshot.com/docs/publish/pricing.md. The orshot-social-media-scheduler skill covers the rest.
Before posting, check the image count and caption length for each target platform: https://orshot.com/docs/publish/social-posting-guidelines.md. On TikTok photo posts the caption becomes the title, which has a much lower limit than a video caption.
Through Postiz. Download the six URLs and post them with Postiz's own upload and post flow, as a draft.
A month of slideshows in one session
The user: "Write 30 slideshow hooks for a plant-care account and render the first 10 as drafts."
- Write 30 hooks. Show them as a numbered list and let the user cut the weak ones.
- Say the cost first: 10 carousels of 6 slides is 60 credits, because each page is one image.
- For each of the first 10, write slides 2 to 6 and pick background images that are not in the used-image log. Render, then
orshot_publish_social_postwith the page URLs andstatus: "draft"(andtiktokSettingsfor TikTok music). - Show the batch together (
orshot_list_social_postswithstatus: "draft") and get one go-ahead for the whole batch, not one per post. - Schedule 1 to 3 a day at the best-time slots. The
orshot-social-media-schedulerskill covers it. - Add each hook and image URL to the log.
Slideshow as a video
"Make a slideshow video from these photos with our track", "turn this carousel into a reel": that is one MP4, not a photo post. Load orshot-video-generator alongside this skill and use them as a pair:
- This skill writes the carousel as usual: the hook slide, the slides, the CTA slide, the fields.
- The video skill makes it a film: one scene per slide, laid out natively for 9:16, a segmented progress rail across the top, one cut family, the song under the whole thing (the "Carousel as a video" format from
orshot_plan_design). - The film keeps the carousel's field names, prefixed per scene, so the same row renders the slides and the video.
The photos and the song must be public URLs.
Run it without the agent
Once the user has approved the format and wants it daily, move it out of the chat. The orshot skill's references/recurring-automation.md builds it as an Orshot Workflow or in the user's own n8n, Make or Zapier. Examples: https://orshot.com/workflows/instagram-carousels-from-sheet, https://orshot.com/workflows/linkedin-carousels-from-sheet and, for a Drive folder of photos posted to TikTok, https://orshot.com/workflows/random-drive-photo-to-tiktok.
Learning loop
Daily, for posts made through Orshot: orshot_get_social_analytics with source: "orshot", sorted by impressions or engagement. Compare hooks.
- High views, low saves or clicks: wrong audience or weak CTA. Change slide 6.
- Low views: change the hook style on slide 1 (question, confession, number).
- Same hook style wins three times: make it the default and rotate the proof slides instead.
Judge a hook after several posts, not one. Track saves and link clicks next to views: views alone often do not turn into installs or sales.
Keep a short log the user can read: date, hook, views, change made.
Safety
- Never publish without the user seeing the slides. A batch can be shown and approved once as a whole.
- Confirm the account (platform and username) and the caption before sending.
- Say how many credits a batch costs before rendering more than ten posts: https://orshot.com/docs/definitions/credits-usage.md.
Gotchas
- On a multi-page template, a content key without a
pageN@prefix changes no page; the response carries a warning. Send one prefixed key per page. A bare style key such astitle.colordoes apply to every page that has atitlelayer. Details: https://orshot.com/docs/image-generation/multi-page-images.md. - Keep every slide under about 20 words so fit mode does not shrink the text too far. Lists (ingredients, a day plan) go in two short columns or one
bodyfield with one item per line. - PDFs cannot be posted. Render png, jpg or webp.
- Reuse one template. A new template per post is slow and spends design effort twice.
- Background photos must be public URLs. Orshot render URLs are.
Related skills: orshot (connection, REST, render options), orshot-design (design craft), orshot-social-media-scheduler (scheduling and analytics), orshot-social-media-content (single posts), orshot-video-generator (the carousel as a video, used as a pair).
