How to Turn Long Videos into Short Clips with n8n
Build an n8n video to clips workflow that transcribes a long video, picks moments by timestamp, writes captions, and gates clips for review before posting.
One good podcast episode or webinar holds five or six clips worth posting. The problem isn't finding them, it's the grind: watch the whole thing, scrub for the good parts, note timestamps, cut, caption, schedule, and remember which ones already went out. An n8n video to clips workflow does the scrubbing for you. Transcribe once, let an LLM mark the strong moments by timestamp, cut those ranges, and queue them with captions.
The templates that rank for this all lean on one paid relay, an Upload-Post, a Swiftia, a FastPix, to both render and publish, with a black-box "find the viral moments" step you can't tune. The pipeline below keeps the selection logic in your own n8n instance so you can swap the render service and still own the brain of it.
What you can automate from one long video
A single source video becomes a queue of short-form assets:
- Three to six vertical clips from a long episode
- A caption and hook generated per clip
- Platform-specific titles for Shorts, Reels, and TikTok
- A thumbnail frame pulled from each clip's start
- A scheduled posting cadence across several days
- A Sheets log of every clip, its source, and its post status
Cut the clips you'll actually post. Generating twelve when you publish three a week just fills a folder nobody opens.
The video-to-clips pipeline
Source video → Transcribe (word timestamps) → LLM picks segments
→ Parse ranges → Cut clips → Caption → Review gate → Queue + Log
The video gets transcribed with timestamps. An LLM reads the transcript and returns the best start and end times. A parse step turns those into clean numbers. The cut step trims each range. Captions get written, a human approves, and the queue takes over.
1. Transcribe with word-level timestamps
This is the foundation, and it's where most builds quietly fail. A plain transcript has no time data, so the LLM guesses and the cuts land wrong. Use a model that returns word-level timestamps, Whisper via the OpenAI node, or AssemblyAI. Now every word carries a time, and clip boundaries can be exact.
2. Let the LLM mark the moments
Pass the timestamped transcript to an OpenAI node and ask for the strongest self-contained segments: each with a start second, an end second, and a one-line reason. Cap the count so it returns four, not forty. The reason field matters, it's how a human later sees why a clip was picked without rewatching.
The single most common failure here is the LLM answering "around the 4 minute mark there's a great point about pricing" instead of { "start": 241, "end": 268 }. A clipping step can't parse a sentence. Tell the model to return only a JSON array of objects with numeric start and end seconds, then add a Code node that parses it before the cut step. If the parse fails, route to an error branch instead of cutting garbage. The execution log makes a missing parse obvious; the silent wrong-cut doesn't.
3. Cut the ranges
The actual trim needs something that handles video by timestamp. On a self-hosted n8n instance, an Execute Command node calling FFmpeg does it for free, FFmpeg cuts cleanly on keyframes and handles the vertical crop. If you'd rather not manage FFmpeg, an HTTP Request to a clipping API works, and because selection already happened upstream, the render service is a swappable detail, not the whole product.
4. Caption each clip
For every cut range, run an OpenAI call that writes a hook and caption from that clip's transcript slice. Per-clip captions beat one caption for all, the clip about pricing and the clip about hiring need different hooks. Parse each response before it reaches the post step.
5. Gate, queue, and log
Don't auto-publish raw AI cuts. Email the clips to an approver, or drop them in a review folder, and only the approved branch queues. Append a row per clip: source video, start, end, caption, status, scheduled time. That log is your dedupe guard so a re-run never re-posts a clip that already shipped.
Implementation patterns worth copying
Pattern: split selection from rendering
Keep the transcript-and-select half in n8n and treat the cut step as a plug. Today it's FFmpeg; tomorrow it's a hosted API. Because the LLM already returned timestamps, swapping the renderer is a one-node change, not a rebuild. The Content Scheduler & Distributor uses the same separation, the queue and per-channel formatting stay stable while the output target changes.
Pattern: schedule across days, not all at once
Posting six clips in an hour buries five of them. Spread them: append each clip with a scheduled_at value a day apart, and let a Schedule trigger publish the next due one each morning. A Schedule trigger that fires while the previous execution is still running will silently drop the run, so give it breathing room with a sensible interval.
Pattern: keep the source transcript
Store the full timestamped transcript in a Sheet alongside the clips. When you want more clips from the same episode next month, you skip the transcription cost entirely and just re-run the selection step. It's also your safety net when a render fails halfway: the timestamps are already saved, so you re-cut without paying for transcription twice.
Watch the running cost while you're at it. Whisper bills per minute of audio and the render service bills per clip, so a daily long-video pipeline adds up faster than the per-run number suggests. In practice, teams cap the clip count per source and batch the renders overnight, when a slower, cheaper tier is fine. The transcript cache is what makes that batching free to retry.
n8n nodes you'll use most
| Node | Purpose |
|---|---|
| HTTP Request | Pulls the source video or hands it to a render API |
| OpenAI (Whisper) | Transcribes with word-level timestamps |
| OpenAI (Chat) | Picks segments and writes captions |
| Code | Parses the timestamp JSON before cutting |
| Execute Command | Runs FFmpeg to cut and crop on a self-hosted instance |
| Google Sheets | Logs clips and powers dedupe |
Getting started
- Pick a source: a podcast feed, a YouTube URL, or an uploaded file.
- Transcribe with a model that returns word-level timestamps.
- Prompt an LLM for four to six segments as numeric start and end seconds.
- Add a Code node to parse that JSON, with an error branch for bad output.
- Cut each range with FFmpeg or a clipping API.
- Generate a per-clip caption and route everything through a review gate.
- Queue approved clips a day apart and log each with its post status.
The Content Scheduler & Distributor ships the queue-and-distribute half this pipeline needs: it reads a content queue from Google Sheets, filters items scheduled for today, generates optimized captions and hashtags with OpenAI per platform, and emails distribution-ready copy with the file link, so your cut clips land on a real cadence instead of all at once. It's part of The Complete n8n Templates Bundle, a one-time lifetime license to the whole catalog plus future templates, worth it once you run more than one content automation.
For the adjacent jobs, turn a podcast into a blog post with n8n reuses the same transcription step for written content, and build an n8n content repurposing workflow shows the fan-out that turns one clip's transcript into captions for several platforms. The Social Media Scheduler & Designer covers the graphic side when a clip needs a cover card.
Compare content distribution templates →Common questions
How do I turn a long video into short clips with n8n?
Do I need a paid video service to clip videos in n8n?
Why does my AI clip selection return the wrong timestamps?
Get the workflow templates this guide is built on
Import-ready n8n JSON, step-by-step setup, and tested end-to-end. One-time payment, own it forever.
Get 3 tested n8n templates, free
The full customer package for three real catalog templates — workflow JSON, step-by-step setup guide, credential checklist. Built through the same live-instance release process as everything we sell. Plus new templates and automation guides in your inbox. No spam, unsubscribe anytime.
- 01Smart To-Do List ManagerPre-built n8n workflow template that automates productivity with OpenAI. Live in about 10 minutes.$14
- 02Email Follow-Up AutomatorPre-built n8n workflow template that automates crm with OpenAI. Live in about 15 minutes.$12
- 03Market Trend AnalyzerPre-built n8n workflow template that automates data processing with OpenAI. Live in about 10 minutes.$14
More automation guides

Automate SEO Internal Linking Across Your Site with n8n
Internal linking is one of the highest-ROI on-page SEO levers, and it's the one that rots fastest. Every new post should link to relevant older ones and earn links back, but nobody remembers the forty…

Build a Self-Filling Content Calendar with n8n
Most content calendars die the same way: the planning sheet looks great in January, then a busy week leaves three empty slots, then a busier week leaves ten, and by March nobody trusts it. The fix isn…

Automate Content Translation and Localization with n8n
A blog that ranks in English is leaving traffic on the table in five other markets. The fix sounds simple, translate the posts, and the popular n8n template does exactly the naive version: title in, b…