Table of Contents
To turn a carousel into a video, export the slides as images (or make them in PublishQ's carousel generator), ask Claude Code to animate them into a 9:16 video with Remotion, giving each slide a few seconds and a transition, with music if you want it, and render the MP4. Then, in one PublishQ session, post the video as a YouTube Short, a TikTok and an Instagram Reel, and post the original slides as a carousel on Instagram and LinkedIn.

What you need
- Your slides as JPEG files, 5 to 10 of them, all the same size
- Node.js and Claude Code on your computer
- A PublishQ account with your YouTube, TikTok, Instagram and LinkedIn accounts connected
- A music file, if you want one
Pick the slide size before you design anything. Instagram only takes feed images between 4:5 and 1.91:1,1 so a 9:16 slide cannot go into an Instagram carousel as it is. Carousel images are also all cropped to match the first one.2 Make the deck at 4:5 portrait, which the carousel generator exports at 1080 x 1350, and let the video put each slide on a taller 1080 x 1920 canvas. The 570 pixels left over give you room for a title band and a background color.
The recipe
-
Download the slides. In the carousel generator, choose the 4:5 portrait size, write your slides and download them. Each slide comes out as a numbered JPEG, which is the format TikTok, Instagram and LinkedIn all take. Slides from another tool work too: export JPEGs named
slide-01.jpg,slide-02.jpgand so on. -
Start a Remotion project. Remotion's docs describe making videos by prompting a coding agent, starting from a blank project.3
npx create-video --yes --blank slides-video cd slides-video npx remotion skills addCopy the JPEGs and your music into the project's
public/folder. Remotion loads files from that folder withstaticFile(), and its<Img>component waits for each image to load before it renders a frame, so slides do not flicker.4 Then runclaudein the same folder. -
Ask Claude Code for the composition. Paste a prompt like this, with your own slide count and timing from the table further down:
Build a 1080x1920 composition at 30 fps called SlidesVideo. Show public/slide-01.jpg to slide-08.jpg in order with <Img> and staticFile(), each one 1080 wide, centered, a little above the middle of the frame. Background color #111827. Put the title "5 pricing mistakes I made" in the top band. Use <TransitionSeries> from @remotion/transitions: 75 frames per slide and a 15-frame slide() transition between slides. Add a slow zoom from 100% to 104% on each slide so the frame is never static. Add public/music.mp3 with <Audio> from @remotion/media at volume 0.2. Work out the composition length from the transition math and tell me the total.<TransitionSeries>puts a transition between two sequences, and both scenes play at once while it runs.5 The music line follows Remotion's own example of a background track at a lower volume.6 -
Preview it. Run
npm run devand scrub through the preview in your browser.3 If you cannot finish reading a slide before it moves, ask Claude Code to add frames to that slide only. -
Render the MP4.
npx remotion render SlidesVideo out/slides.mp4writes the file, and Remotion uses the H.264 encoder when you do not pass a codec.7 A 30 fps H.264 MP4 at 1080 x 1920 fits Reels (23 to 60 fps, 9:16 recommended)1 and TikTok (23 to 60 fps, 360 to 4096 pixels per side).8 -
Post both formats from PublishQ. One more prompt to Claude Code does the uploads and two posts. The step is described in its own section below.

Seconds per slide for 5, 8 and 10 slides
Every transition overlaps two slides, so it takes its length off the total. Remotion's docs give the formula: add up the slide durations and subtract each transition.5 The table uses 30 fps and a 0.5 second (15 frame) transition. "Light" means a headline and a line of text. "Dense" means a list or a paragraph.
| Slides | Light text: seconds per slide | Light: total length | Dense text: seconds per slide | Dense: total length |
|---|---|---|---|---|
| 5 | 3 (90 frames) | 13 seconds | 5 (150 frames) | 23 seconds |
| 8 | 2.5 (75 frames) | 16.5 seconds | 4 (120 frames) | 28.5 seconds |
| 10 | 2.5 (75 frames) | 20.5 seconds | 3.5 (105 frames) | 30.5 seconds |
For any other deck: total frames = slides x frames per slide - (slides - 1) x 15. Give the first slide an extra second if it carries your hook, and the last one an extra second if it asks for a follow.
Every row stays well under a minute. That matters on YouTube: a vertical video up to three minutes counts as a Short, but a Short over one minute with an active copyright claim gets blocked.9 If you want music without the risk, the tracks in YouTube's own Audio Library are royalty-free and do not get Content ID claims.9
Step 6: two posts from one session
Connect PublishQ to Claude Code once:
claude mcp add --transport http publishq https://publishq.com/mcpType /mcp, pick Authenticate and approve the login in your browser. Your YouTube channel is the one you connected in PublishQ, so you never create a Google Cloud project or wait for API access. Then:
Upload out/slides.mp4 and public/slide-01.jpg to slide-08.jpg to PublishQ, all in the
folder "Carousels/Pricing mistakes".
Post 1, the video: my YouTube, TikTok and Instagram accounts. YouTube title
"5 pricing mistakes I made in year one", unlisted for now. Give TikTok and Instagram
their own captions with postOverrides. Call publishq_get_tiktok_creator_info first and
use a privacy level it returns.
Post 2, the slides in order: my Instagram and LinkedIn accounts, one caption each.
Schedule post 1 for tomorrow 09:00 UTC and post 2 for Thursday 09:00 UTC.
Show me both posts before you create them.Claude Code uses publishq_upload_media and publishq_create_post to do it, and the files stay grouped in a media folder for the next time you reuse the deck. A vertical video under three minutes becomes a Short with no extra setting, and a single video on Instagram publishes as a Reel. The eight JPEGs become an Instagram carousel and a multi-image LinkedIn post. Both posts can be edited or cancelled until they go out. The Instagram MCP guide has more prompts for the carousel side, and the YouTube API docs list the settings the Short accepts, like description and tags.
Before you post, put one frame of the video into the Shorts safe zone checker and the TikTok safe zone checker. Each app lays its buttons and caption over part of the frame, and the checkers show you which part, so you can tell Claude Code to nudge the slide up or shrink it.
Skip the video: a TikTok photo post
TikTok has its own answer to carousels. A photo post holds up to 35 images, and with auto_add_music turned on TikTok adds recommended music that the creator can change later in the app.10 TikTok takes JPEG or WebP images up to 1080p.8
In PublishQ that is the same 8 JPEGs posted to your TikTok account with autoAddMusic: true in the TikTok settings, and photoCoverIndex if a slide other than the first should be the cover. Add TikTok to post 2 in the prompt above and you have three carousels and three videos from one deck. The TikTok MCP prompts cover the TikTok settings in more detail.
Nothing stops you from posting both on TikTok, a photo post one day and the video another.
No code: AI video creation
If you would rather not touch a terminal, AI video creation in the PublishQ dashboard goes from a prompt or a template to a short vertical video. AI makes the scene images, a template renders the video, and you preview and edit it before scheduling it to YouTube Shorts, TikTok and Reels. It suits a video that starts from an idea rather than from slides you already have.

Doing this with Cursor, Codex or another agent
Remotion's prompting guide names Claude Code and Codex,3 and Cursor runs the same terminal commands, so steps 2 to 5 do not change. Only the PublishQ connection does. In Cursor, add {"mcpServers":{"publishq":{"url":"https://publishq.com/mcp"}}} to ~/.cursor/mcp.json. In Codex, run npx @publishq/cli@latest login, then codex mcp add publishq -- npx -y @publishq/mcp@latest.
| Agent | YouTube setup page |
|---|---|
| Claude Code | publishq.com/claude-code/youtube |
| Cursor | publishq.com/cursor/youtube |
| Codex | publishq.com/codex/youtube |
| Claude Cowork | publishq.com/claude-cowork/youtube |
| Gemini CLI | publishq.com/gemini-cli/youtube |
| Kiro | publishq.com/kiro/youtube |
| Manus | publishq.com/manus/youtube |
| Hermes Agent | publishq.com/hermes-agent/youtube |
| OpenClaw | publishq.com/openclaw/youtube |
| Muse | publishq.com/muse/youtube |
For any other agent, open https://publishq.com/agents and paste the line at the top of that page into your agent. It sets itself up and sends you a link to approve the login in your browser.
The MCP server, CLI and API are on every plan, the Free plan included. One license note on the Remotion side: it is free for individuals and companies with up to three employees, and bigger for-profit companies need a company license.11
Post your next carousel twice
Create a PublishQ account, connect your channels, and post the slides and the Short from the same session.
Footnotes
-
IG User Media reference, Meta for Developers (2026-11) - feed images must be between 4:5 and 1.91:1; Reels at 23 to 60 fps with 9:16 recommended ↩ ↩2
-
Content Publishing, Instagram Platform, Meta for Developers (2026-11) - carousel images are all cropped based on the first image, 1:1 by default ↩
-
Prompting videos with coding agents, Remotion (2026-11) - npx create-video --yes --blank, npx remotion skills add, npm run dev, works with Claude Code and Codex ↩ ↩2 ↩3
-
Img, Remotion (2026-11) - images in public/ referenced with staticFile(), loaded before the frame renders to avoid flicker ↩
-
TransitionSeries, Remotion (2026-11) - transitions between sequences, both scenes render during a transition, total duration is the sum of sequences minus transitions ↩ ↩2
-
Video and Audio, Remotion (2026-11) - Audio from @remotion/media with a file in public/, volume and loop ↩
-
npx remotion render, Remotion (2026-11) - render command with composition ID and output location, H.264 when no codec is given ↩
-
Content Posting API media transfer guide, TikTok for Developers (2026-11) - video 23 to 60 fps, 360 to 4096 pixels per side; images WebP or JPEG up to 1080p ↩ ↩2
-
Understand three-minute YouTube Shorts, YouTube Help (2026-11) - square or vertical videos up to three minutes are Shorts; Shorts over one minute with an active claim are blocked; YouTube Audio Library music gets no Content ID claim ↩ ↩2
-
Content Posting API photo post reference, TikTok for Developers (2026-11) - photo posts with up to 35 images, auto_add_music adds recommended music the user can change later ↩
-
Remotion License, remotion-dev/remotion on GitHub (2026-11) - free for individuals and for-profit organizations with up to 3 employees; larger companies need a company license ↩
