Instagram Reels + Gemini, clone winning clips fast
You finally find a Reel that hits. Then the copy-paste grind starts: download it, study it, write notes, brief someone (or yourself), and try to recreate the “feel” without accidentally rebuilding the same video.
This Reels cloning automation hurts social media managers first, but creators chasing trends and growth-focused marketers feel it too. The goal is simple: turn one high-performing Reel into multiple brand-safe variations without spending your whole afternoon on “analysis” and rework.
This workflow takes an Instagram Reel URL, has Gemini describe what makes it work, then uses Replicate to generate a fresh clip in the same style. You’ll learn what it automates, what you need, and how to run it reliably.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Instagram Reels + Gemini, clone winning clips fast
flowchart LR
subgraph sg0["When chat message received Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When chat message received", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Reel Downloader"]
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Formatter", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Checks Null/ Not", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Download Reel"]
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Upload the video to model"]
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Analyse the Video"]
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Create the Video"]
n9@{ icon: "mdi:cog", form: "rounded", label: "Pause", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Status of the Video"]
n11@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Checks if the video generati..", pos: "b", h: 48 }
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetches the Video Output"]
n1 --> n10
n9 --> n10
n3 --> n4
n5 --> n6
n2 --> n3
n4 --> n2
n4 --> n5
n8 --> n9
n7 --> n8
n10 --> n11
n6 --> n7
n0 --> n2
n11 --> n12
n11 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n4,n11 decision
class n2,n5,n6,n7,n8,n10,n12 api
classDef customIcon fill:none,stroke:none
class n2,n5,n6,n7,n8,n10,n12 customIcon
Why This Matters: Turning one great Reel into five is slow
Most teams don’t struggle to get ideas. They struggle to turn a good idea into repeatable output. When a Reel performs well, you want variations fast: new hook, new first frame, slightly different pacing, maybe a different CTA. But doing that manually means replaying the video a dozen times, writing a brief, trying to describe camera movement and transitions in words, then realizing the finished edit missed the vibe anyway. It’s annoying, honestly, because the “winning pattern” is right there in the original clip, yet you’re still rebuilding it from scratch.
It adds up fast. Here’s where it usually breaks down.
- Watching the same Reel repeatedly to capture details turns into an hour of note-taking for a 20-second video.
- Your brief ends up vague (“cinematic”, “fast cuts”), which means extra back-and-forth and weaker variations.
- When you finally get a variation, you can’t explain why it worked, so scaling to weekly volume feels impossible.
- Copyright risk creeps in when “inspired by” accidentally becomes “too similar,” especially under pressure.
What You’ll Build: Reel-to-variation video generation pipeline
This workflow starts when you paste an Instagram Reel link into an n8n chat-style input. n8n pulls the Reel metadata and download URL using an Instagram downloader API, then retrieves the actual video file. Next, the video is uploaded to Gemini 2.0 Flash for “video understanding,” so you get a detailed breakdown of what’s happening: visuals, camera movement, lighting, pacing, transitions, plus the audio context. That description is then cleaned into a prompt format that video generation models respond to well (continuous text, simple formatting). Finally, n8n sends the prompt to Replicate’s Minimax Video-01 model, waits while the clip renders, and downloads the finished variation when it’s ready.
The workflow begins with a single URL. AI turns the original Reel into an unusually clear creative brief, then Replicate uses that brief to generate a new clip in the same style. Once Replicate finishes, the workflow grabs the output file so you can publish it or route it into your next step.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you want 5 variations of one winning Reel for the week. Manually, plan on about 30 minutes per variation between studying the original, writing notes, and re-briefing edits, so roughly 2–3 hours total. With this workflow, you paste the URL once, then wait for analysis and generation (video generation is typically 2–5 minutes each, and the workflow polls automatically). Even if you still do light finishing touches, you’re usually getting those 5 drafts in about 30 minutes of active work, not half a day.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- RapidAPI for Instagram Reels downloader access.
- Google AI Studio (Gemini) to analyze video content into a prompt.
- Replicate API key (get it from your Replicate account settings).
Skill level: Intermediate. You’ll mostly paste API keys, test runs, and tweak prompts, but you should be comfortable troubleshooting API responses.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
Paste an Instagram Reel URL. The workflow begins from an n8n chat trigger, so you can run it on demand without building a form first.
Fetch and validate the Reel. n8n calls an Instagram downloader endpoint (via HTTP Request), checks the link looks usable, and then retrieves the actual video file.
Gemini turns the clip into a usable “creative brief.” The video is uploaded to Gemini 2.0 Flash, which analyzes it frame-by-frame and returns a detailed description of the visuals, motion, pacing, and transitions. That output gets reformatted into a cleaner prompt (lowercase, no punctuation) so generation models behave more predictably.
Replicate generates a new clip and n8n waits for it. The workflow sends the prompt to Minimax Video-01, then polls status every couple minutes until it’s done. When it succeeds, the final clip is downloaded for you to store, review, or pass into the next automation.
You can easily modify the input trigger to use a webhook or a scheduled run based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Chat Trigger
Set up the workflow entry point so users can submit an Instagram Reel URL through chat.
- Add and open Incoming Chat Trigger.
- Set Public to
trueso the chat trigger is accessible. - Connect Incoming Chat Trigger to Fetch Reel Metadata to begin the workflow.
Step 2: Connect Instagram Reel Metadata Retrieval
Pull reel metadata and map the downloadable file URL for later processing.
- Open Fetch Reel Metadata and set URL to
https://instagram-reels-downloader-api.p.rapidapi.com/download. - Enable Send Query and set the query parameter url to
{{ $json.chatInput }}. - Enable Send Headers and set x-rapidapi-host to
instagram-reels-downloader-api.p.rapidapi.comand x-rapidapi-key to your key (replace[CONFIGURE_YOUR_API_KEY]). - In Map Reel Link, set the field Instagram Reel to
{{ $json.data.medias[0].url }}. - In Validate Reel URL, keep the condition leftValue
{{ $json['Instagram Reel'] }}equals rightValuenullto route missing URLs back for re-fetch.
⚠️ Common Pitfall: The RapidAPI key is not stored in credentials. Replace [CONFIGURE_YOUR_API_KEY] in Fetch Reel Metadata or the request will fail.
Step 3: Retrieve, Upload, and Analyze the Reel Video
Download the reel file, upload it to Gemini for file hosting, and generate a detailed analysis prompt.
- In Retrieve Reel File, set URL to
{{ $json["Instagram Reel"] }}to download the reel file. - In Upload Video Asset, set URL to
https://generativelanguage.googleapis.com/upload/v1beta/files?key=[CONFIGURE_YOUR_API_KEY]and Content Type tobinaryData. - Keep Input Data Field Name as
dataand retain headers including Content-Typevideo/mp4. - In Analyze Video Content, set URL to
https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=[CONFIGURE_YOUR_API_KEY]. - Set JSON Body to the provided prompt and ensure the file URI uses
{{ $json.file.uri }}.
⚠️ Common Pitfall: Both Upload Video Asset and Analyze Video Content require a valid Gemini API key. Replace [CONFIGURE_YOUR_API_KEY] in both nodes.
Step 4: Generate and Poll the New Video
Send the analysis to Replicate, wait, and poll until the generated video is ready.
- In Generate New Video, set URL to
https://api.replicate.com/v1/models/minimax/video-01/predictions. - Set JSON Body to
{ "input": { "prompt": "{{ $json.candidates[0].content.parts[0].text }}" } }. - Set the Authorization header to
Bearer [CONFIGURE_YOUR_TOKEN]and keep Prefer aswait. - In Delay Processing, set Amount to
2to pause before status checks. - In Check Generation Status, set URL to
https://api.replicate.com/v1/predictions/{{ $json["id"] }}and keep the Authorization header. - In Verify Generation Done, keep the condition leftValue
{{ $json.status }}equals rightValuesucceeded. - Connect the false branch of Verify Generation Done to Loop Wait Timer, then back to Check Generation Status for polling.
⚠️ Common Pitfall: Replicate requests will fail without a valid token. Replace [CONFIGURE_YOUR_TOKEN] in Generate New Video, Check Generation Status, and Download Generated Clip.
Step 5: Configure the Output Download
Download the final generated clip once the generation completes.
- In Download Generated Clip, set URL to
{{ $json.output }}. - Keep Send Headers enabled and reuse the Authorization header with
Bearer [CONFIGURE_YOUR_TOKEN]. - Ensure Verify Generation Done connects to Download Generated Clip on the success branch.
Step 6: Test and Activate Your Workflow
Run a manual test to confirm the full reel regeneration cycle before activating.
- Click Execute Workflow and send a valid Instagram Reel URL via Incoming Chat Trigger.
- Verify Fetch Reel Metadata returns metadata and Map Reel Link populates Instagram Reel.
- Confirm Analyze Video Content returns a prompt and Generate New Video returns an
id. - Wait for Verify Generation Done to route to Download Generated Clip and confirm a binary response is returned.
- When successful, switch the workflow to Active for production use.
Troubleshooting Tips
- RapidAPI credentials can expire or be tied to plan limits. If downloads start failing, check your RapidAPI dashboard usage and the specific Instagram downloader subscription first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Quick Answers
About 30 minutes if your API keys are ready.
No. You’ll connect services, paste API keys, and test a run.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in RapidAPI usage plus Gemini and Replicate API costs (video analysis and generation are the main drivers).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you should. You can replace the Incoming Chat Trigger with a webhook to accept URLs from a form, or swap in a scheduled trigger to process a list from Google Sheets. Common customizations include generating multiple prompt variations from one Gemini analysis, adding a branding step before the final download, and saving outputs to Drive or Dropbox for easy review.
Usually it’s the API key, plan limits, or an endpoint change from the Instagram downloader provider. Regenerate the RapidAPI key if needed, confirm the subscription is active, and check the HTTP Request node’s response body for a clear error message. Also, some Reels can be harder to fetch if they’re private, region-limited, or age-restricted.
If you self-host, there’s no execution cap from n8n (your server and API budgets become the limit). On n8n Cloud, your plan sets monthly executions, and video workflows can use multiple executions per clip because of polling. In practice, most teams run this in small batches because Gemini analysis and Replicate generation are the real bottlenecks. If you want higher volume, reduce polling frequency, process shorter clips first, and watch Replicate credits carefully.
For this workflow, n8n has a few advantages: more complex logic with unlimited branching at no extra cost, a self-hosting option for unlimited executions, and easier handling of “wait + poll until complete” patterns that get awkward in simpler builders. Zapier or Make can still work if you’re doing a basic “URL in, message out” flow, but they’re not as comfortable with binary files and long-running jobs. If your main goal is reliability at volume, n8n is usually the calmer choice. Talk to an automation expert if you’re not sure which fits.
Once this is running, you stop “re-studying” the same winning Reel over and over. The workflow handles the heavy lifting so you can spend your time on what actually moves results: better hooks, cleaner offers, and faster testing.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.