A step-by-step operator's guide to building a custom AI reel generator. Learn the right stack, prompts, and debugging for automated video content.
The Core Components of a Real AI Reel Generator
Let’s get this straight: most ‘AI video tools’ are toys. They stitch together stock clips with robotic voiceovers and call it a day. The output is generic and instantly skippable. If you want to create content that doesn’t scream ‘I was made by a cheap script,’ you need to build your own pipeline. I’m not talking about writing code from scratch. I’m talking about connecting a few powerful, specialized AI services together to create an asset you actually want to publish.
This isn’t a theoretical exercise. I’ve built this system to produce hundreds of videos for different projects. It works by breaking the problem down into logical, automatable steps.
You need four key components:
- A Scripting Engine: An LLM to write the actual content of the reel.
- A Voice Engine: A text-to-speech (TTS) service to create a realistic voiceover.
- An Asset Source: A place to pull relevant B-roll clips from.
- A Video Assembly Engine: A service that takes the script, voiceover, and B-roll and renders a final video file.
And you need an orchestrator to tie it all together. For this, a no-code AI tool like Make (formerly Integromat) is perfect. It’s visual and lets you see the data flow from one step to the next. You could also use Pipedream or Zapier automations, but I find Make’s interface more intuitive for complex, multi-step workflows. The free plan on Make is a joke, honestly, but their Core plan at $9/mo is enough to get started and run a decent volume.
Step 1: The Scripting Engine (And the Right Prompt)
Your script is the foundation. Garbage in, garbage out. The goal isn’t just to get a script, but to get a script formatted in a way a machine can easily parse. This means getting the LLM to output structured data, not just a wall of text. I prefer using Claude 3 Opus for this kind of structured generation, but GPT-4 works fine too.
🤖
Recommended Reading
AI Side Hustles
12 Ways to Earn with AI
Practical setups for building real income streams with AI tools. No coding needed. 12 tested models with real numbers.
The key is to ask for a JSON output that separates the spoken text from the visual cues. This is the part that makes the rest of the automation possible.
Here’s a prompt that works well. Notice how specific it is about the structure.
You are an expert social media video scriptwriter. Your task is to generate a script for a 30-second Instagram Reel about the benefits of cold plunging. The tone should be informative but energetic. The target audience is fitness enthusiasts aged 25-40.
Generate a JSON object with a single key, "scenes". The value of "scenes" should be an array of objects. Each object in the array represents a scene and must have two keys:
1. "narration": A string of text for the voiceover for that scene (max 2 sentences).
2. "visual_cue": A short, descriptive string of what B-roll footage should be shown (e.g., "person stepping into an ice bath", "close up on steaming coffee").
Create exactly 5 scenes. Do not include any other text or explanation outside of the JSON object.
The output from this prompt is clean, predictable, and ready for the next step in your automation. You don’t have to manually split up paragraphs or guess which visuals go where. The machine does the work because you gave it clear instructions.
Once you have your script, you need a voice. For this, nothing beats ElevenLabs. Their API is simple, and the voices are less robotic than anything else on the market. Their Starter plan is $5/mo and gives you enough credits for a few hundred short videos, which is a fair price for the quality.
In your Make scenario, you’ll take the JSON output from the LLM, iterate through the `scenes` array, and send the `narration` text of each scene to the ElevenLabs API. You’ll get back an MP3 file for each piece of narration. It’s critical to save these files with a predictable naming convention (e.g., `reel_1_scene_1.mp3`, `reel_1_scene_2.mp3`) so the video assembler can find them later.
This is my favorite part of the stack. The API is just clean. You send text, you get back audio. No complex configurations, no weird status polling. It just works. It’s a perfect example of an AI service built for developers and operators, not just a fancy web UI.
What do most guides on this topic get wrong?
They completely gloss over the hardest part: asset sourcing. They assume you have a folder of perfect video clips ready to go. You don’t. An effective AI reel generator needs to fetch its own B-roll. This is the difference between a demo and a production system.
You can connect to the API of a stock footage service like Pexels (which has a free API) or a paid service like Storyblocks. In your Make workflow, you’ll take the `visual_cue` from your script JSON and use it as the search query for the video API. For the cue “person stepping into an ice bath”, your system searches Pexels for that exact phrase, downloads the top video result, and stores it.
This introduces a new failure point. What if the API returns no results? What if the top result is terrible? A production-grade system needs error handling. You should build in a fallback search (e.g., if the first query fails, try a simpler one) or have a default set of generic clips it can use as a last resort. Ignoring this step is why most home-built generators are unreliable.
This is where an operator playbook becomes essential. You’re not just building a tool; you’re building a process with contingencies.
Step 3: Assembling the Final Video with Creatomate
Now you have your script, your voiceover files, and your B-roll clips. The final step is stitching them all together. For this, I use an API-first video generation platform called Creatomate. It works by creating templates that can be filled with content via an API call.
You’d create a simple template in their editor with placeholders for a video clip, an audio track, and maybe some animated text captions. Then, your Make scenario sends a single API call to Creatomate with all your assets:
- The path to the B-roll clip for scene 1.
- The path to the voiceover audio for scene 1.
- The narration text for scene 1 (to be burned in as captions).
You repeat this for all 5 scenes. Creatomate then queues a render job and creates the final MP4. Their pricing is based on render minutes, and the $25/mo Creator plan gives you 75 minutes, which is plenty for a solo operator making a few dozen reels a month.
My one gripe with Creatomate is that their template editor can feel a bit clunky, especially when dealing with complex animations. It’s powerful, but the learning curve is steeper than it looks — and good luck finding clear docs for some of the more advanced dynamic properties.
The entire workflow in Make looks like this:
- Webhook Trigger: Starts the process, maybe with a topic from a Google Sheet.
- OpenAI/Claude Module: Sends the prompt, gets the script JSON back.
- JSON Parser: Extracts the scenes into a format Make can iterate over.
- Iterator: Loops through each scene object.
- Inside the Iterator:
- Pexels Module: Searches for video using the `visual_cue`.
- ElevenLabs Module: Generates audio from the `narration`.
- HTTP Module (for Creatomate): Collects all the assets for the scene.
- Video Renderer Module (Creatomate): After the loop, sends all collected scene data to the API to start the final render.
This isn’t a simple, two-step Zap. It’s a real piece of automation. It’s an AI agent framework designed for a specific business task.
How to Debug When This Breaks
And it will break.
Automation pipelines like this have multiple points of failure. The LLM might output malformed JSON. The Pexels API might time out. The ElevenLabs voice you chose might be deprecated. The most common problem is a timing mismatch—the voiceover is 5 seconds long, but the B-roll clip is 12 seconds, creating an awkward pause.
Your first line of defense is logging. In Make, every module has an execution history. Don’t just look at the final error message. Go back, step-by-step, and inspect the inputs and outputs of each module. Did the LLM send back valid JSON? Did Pexels return a URL, or an error message? 90% of the time, the problem is bad data being passed from one step to the next.
For timing issues, you need to be more sophisticated. Before sending the job to Creatomate, you should get the duration of the audio file from ElevenLabs and the duration of the video file from Pexels. You can then instruct Creatomate to trim the video clip to match the audio duration. This single step solves the most common and amateurish-looking mistake in automated video.
Building this system requires patience. You’ll spend an afternoon getting the basic flow working, and then another few days hardening it against edge cases. It’s a real project, not a 10-minute tutorial.
But the result is a content machine. A true AI reel generator that can take a single idea from a spreadsheet and turn it into a finished, publishable video without you touching a thing. That’s the power of building your own AI automation blueprint.
If you want the deep cut on this, deeper coverage of AI agent platforms.
If you’d rather skip the build and deploy a working version in an afternoon, we’ve packaged this entire workflow as a pre-built, deployable system. You can find it in the AI blueprints platform at deepusecase.com/vault.