Mindket

Instagram reel rewriter with an optional avatar video

Newversion 1 · updated

Overview

An n8n workflow that rewrites Instagram reels from links in a Google Sheet. Apify transcribes each reel, OpenAI writes a new script, caption and overlay in the same shape, and a switched-off part makes and posts an avatar video.

Instagram reel rewriter with an optional avatar video is an n8n workflow in the Marketing & SEO category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

At a glance

Runs in
  • n8n Cloud: import the file there. The second part’s community node needs your own server, or n8n Cloud if it offers that node
  • Your own n8n server: the same file and steps
  • Google Sheets: each script, caption and overlay sits in the link’s row, ready to record
  • Instagram: the second part posts through Mixpost, or you post a video you recorded yourself

Platform

Connects 8 apps

How it works

Trigger

Every minute

It starts every minute and takes the first row of Sheet1 with an empty Script, which holds:

  • An Instagram reel link, in ReelURL

Actions

  1. Cleans the link and has an Apify actor fetch the reel’s transcript, caption and hashtags
  2. Waits 2 seconds and asks again while the transcript is not ready
  3. gpt-4.1-mini writes a new script, caption and overlay line on the same topic and in the same shape
  4. Writes the three into the reel’s row
  5. Switched off: makes a talking avatar video from a script and posts it to Instagram

Result

A sheet where each reel link has a new script, caption and overlay line to record, with an avatar video as an option

Integrations

What you need before you start.

Google Sheets

Spreadsheet

Holds the reel links and takes each new script, caption and overlay back into the link’s row.

NeedsA Google account to sign in with, and a sheet with one tab

Apify

Reel transcripts

Runs an Instagram transcript actor that returns the reel’s spoken words, caption and hashtags.

NeedsApify API token, typed into a header

OpenAI

Language model

Runs gpt-4.1-mini to rewrite the script, the caption and the overlay line.

NeedsOpenAI API key

Google Drive

File storage

Holds the avatar’s photo and, once repaired, takes the finished video.

NeedsA Google account, for the switched-off part

ElevenLabs

Voice

Reads the script aloud in the voice you pick, as an MP3.

NeedsElevenLabs API key and a voice ID, for the switched-off part

RunningHub

Avatar video

Runs a RunningHub workflow that makes the talking video from the photo and the voice.

NeedsRunningHub API key, for the switched-off part

Submagic

Captions and B-roll

Adds styled captions, zooms and B-roll to the avatar video.

NeedsSubmagic API key, for the switched-off part

Mixpost

Social posting

Takes the finished video and posts it as a reel on your Instagram account.

NeedsA Mixpost workspace and the community node, for the switched-off part

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
9 steps, starting on a schedule
Not reached
25 nodes no run reaches: createTask, uploadImage, uploadAudio, Merge2, Aggregate and 20 more
AI
1 step calls an AI model: Generate Script, Caption, Overlay
Sign-ins
Signs in to: Google Sheets, OpenAI and Apify
API keys
No API key is left in the file; 1 blank in it for your own key
Community nodes
Needs the community node package n8n-nodes-gravitysocial
Step types
Mindket’s checker reads all 8 of its step types

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow turns Instagram reels you want to learn from into new scripts you can record. You paste reel links into a Google Sheet. Every minute it takes the first row with no script yet and has an Apify actor transcribe that reel. OpenAI’s gpt-4.1-mini then writes a new script on the same topic and in the same shape, with a caption and a short overlay line, and saves all three to the row. A second part ships switched off. It makes a talking avatar video from a script and posts it to Instagram. 41 nodes in all, five of them notes.

Who it suits

Creators and social media managers who study reels that do well and want a draft in the same format to record or give to an avatar. It suits someone who reads each draft before using it. Skip it if you want finished videos with no setup. The video part needs four more services and three repairs.

Who uses it, and how
IndustryWho uses itHow they use itExample
Social media agenciesContent strategistsCollect a niche’s top reels in the sheet and rewrite them for a clientAn agency drops ten fitness reels in on Monday and reviews a rewritten script for each.
Coaching and coursesSolo creatorsTurn a reel that did well in their field into their own takeA business coach rewrites a list of tools into a list of her own picks.
Online retailBrand marketersBorrow a format from reels in their category for their own productA skincare brand keeps a three-step format and fills it with its own routine.
Faceless channelsChannel owners who use AI avatarsTurn on the second part to make and post avatar videosA channel owner posts a captioned avatar reel from each script they approve.

You need some n8n for the first part: importing a file, two credentials and a token. The second part asks for much more, with four more accounts, a community node and three repairs. Its author puts setup at about 24 minutes.

Where to use it

Any n8n that can reach Apify, OpenAI and Google runs the first part. The drafts land beside each link in your sheet.

  • n8n Cloud: import the file there. The second part’s community node needs your own server, or n8n Cloud if it offers that node
  • Your own n8n server: the same file and steps
  • Google Sheets: each script, caption and overlay sits in the link’s row, ready to record
  • Instagram: the second part posts through Mixpost, or you post a video you recorded yourself

Setup

Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Start with the first part, which runs on its own.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
ApifyAn API token, typed into a header
OpenAIAn API key that can use gpt-4.1-mini
GoogleAn account that can edit the sheet, for a Google Sheets OAuth2 credential
The second partKeys for ElevenLabs, RunningHub, Submagic and Mixpost, a photo in Google Drive, and the community node n8n-nodes-gravitysocial
The sheet
TabColumns
Sheet1ReelURL, Script, Caption, Overlay, Approved and Video Link. You fill ReelURL, and the workflow fills the rest except Approved
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Make the sheet and copy its ID: the long part of its address between /d/ and /edit.
  3. Add a Google Sheets OAuth2 credential. In Get row and Update row in sheet, select it and replace YOUR_SHEET_ID with the ID.
  4. In Download IG Reel, replace <YOUR_APIFY_TOKEN> in the Authorization header with your token. The brackets go too.
  5. Add an OpenAI credential and select it in OpenAI Chat Model.
  6. Fix the retry loop as Good to know shows.
  7. Put one reel link in ReelURL, save and press Execute workflow. When the row fills in, press Publish.

The second part needs the four values in API Setup, Google Drive and Mixpost credentials, and the photo’s ID in place of YOUR_IMAGE_FILE_ID. Replace YOUR_WORKSPACE_UUID in the three Mixpost nodes, then turn its 25 nodes on. Its trigger is Webhook, at the path reel-avatar-video, and it receives this:

{
  "Script": "<the script from the sheet>",
  "Caption": "<the caption from the sheet>",
  "row": 2
}

How to use it

Add a reel link to ReelURL on a new row. The next run picks it up, and once the actor returns the transcript, Script, Caption and Overlay fill in. Read the script before you record it. To make a video, send that row’s script, caption and row number to the webhook, from a button, a script or another workflow.

What to change for a different result
To changeWhere
The script’s length, hook and shapeThe message in Generate Script, Caption, Overlay
The closing lineThe same message, which ends every script with one fixed call to follow
How often it looksSchedule Trigger, every minute now
The voicevoice_id in API Setup and model_id in generateAudio
The captions’ looktemplateName and the B-roll settings in Submagic Create Task

Example

You add a reel in which a creator names three free apps for editing video. Download IG Reel returns its transcript, caption and hashtags. The chain answers in its parser’s shape, shown here with the content cut:

{
  "Script": "…",
  "Caption": "…",
  "Overlay": "…"
}

The script names three other apps in the same order of hook, list and close, at about the same length, and ends on the prompt’s follow line. The caption keeps the original’s tone, with up to five hashtags. The overlay is one line of eight words or fewer.

For newcomers and experts

If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. Grey boxes are switched off, and n8n skips them. Get the top row of boxes working first, with one link. Then open Generate Script, Caption, Overlay in that run to read exactly what the model was sent and what it wrote.

For experts. The two parts share nothing but the sheet. The first runs on a schedule, and the second waits for a POST.

The services behind each step
NodeService or modelWhat to know
Download IG ReelApify run-sync, actor 3C7L8IMQOkq3isV2YOne call that waits for the transcript. Its retry loop is the risk under Good to know
Generate Script, Caption, Overlaygpt-4.1-mini through OpenAI Chat ModelA basic chain with a parser, with no agent and no tools
generateAudioElevenLabs text to speech, eleven_multilingual_v2Returns an MP3 at 44.1 kHz and 128 kbps
createTaskRunningHub workflow 1996082549246083074Takes the uploaded photo and voice by their file names
Submagic Create TaskSubmagic’s projects APITemplate Hormozi 2, zooms on, B-roll on 60 percent
Create a postMixpost, through the community nodeA reel post on the first Instagram account in the workspace

Good to know

The first part has a costly retry loop to fix before you publish, and the second has faults of its own.

  • The retry loop: on a retry, Download IG Reel reads ReelURL from the actor’s reply instead of your row. Without that field the call goes out empty, fails and repeats every 2 seconds, each time a new paid run. Change its body to {{ $('fixURL').item.json.ReelURL }} first
  • Overlapping runs: a transcript can take more than a minute, and the next run picks the same row again. Set Schedule Trigger to 10 minutes or more
  • Executions: every minute is 1,440 runs a day, the empty ones included, so check your n8n plan
  • Model shutdown: OpenAI’s deprecations page, read on 2 November 2026, lists GPT-4.1 mini for shutdown on 14 January 2027, with gpt-6-luna as its replacement
  • Billing: the actor, sian.agency’s Instagram AI Transcript Extractor, listed $0.028 a reel plus $0.005 a start on its free tier that day. OpenAI bills one call a row
  • The second part: Upload file fails as written, since it gets no file from Create a post. Connect it after Download Video with the field data. Wait6 checks Submagic every second
  • Someone else’s reel: check Instagram’s rules on reused content, and the creator’s rights, before you post a remake
  • Your data: the link goes to Apify and the words to OpenAI. In the second part, the script, photo and video go to ElevenLabs, RunningHub, Submagic, Mixpost and Google Drive
  • Credentials: the JSON holds none. The Apify token sits in a header and the second part’s keys in API Setup, so take them out before you share it

README and files

README

Instagram reel rewriter with an optional avatar video

An n8n workflow that takes Instagram reel links from a Google Sheet and writes a new script, caption and on-screen line
for each, on the same topic and in the same shape as the original. An Apify actor transcribes the reel and OpenAI's
gpt-4.1-mini rewrites it. A second, switched-off part turns an approved script into a talking avatar video with
ElevenLabs and RunningHub, adds captions with Submagic and posts it to Instagram through Mixpost.

What is inside

  • workflow.json: the workflow as n8n exports it, 41 nodes. Five are sticky notes that number its parts. The first part,
    eleven working nodes, is on. The other 25 working nodes are switched off, as they were in the original copy. It holds
    no credential.
  • README.md: these notes.

What we changed from the original copy

  • The code in fixURL had lost its backslashes in the original copy, so its pattern read
    /https://www.instagram.com/[^/]+/(reel|reels|p)//, which is not valid JavaScript, and every run failed there. It is
    back to /https:\/\/www\.instagram\.com\/[^\/]+\/(reel|reels|p)\//, which takes the account name out of a link such as
    instagram.com/<name>/reel/<id>/.
  • The Authorization header of Download IG Reel read Bearer <token>. It now reads Bearer <YOUR_APIFY_TOKEN>.
  • The author's sheet is gone. Get row, Update row in sheet and Update row in sheet1 ask for YOUR_SHEET_ID and use
    the tab Sheet1.
  • getImage pointed at a photo in the author's Google Drive. It now asks for YOUR_IMAGE_FILE_ID.
  • Webhook had a random path from the author's n8n. It is now reel-avatar-video.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • An Apify account and its API token.
  • An OpenAI API key that can use gpt-4.1-mini.
  • A Google account, and a Google Sheet (below).
  • Only for the switched-off part: a Google Drive photo of the person the avatar shows, and accounts with ElevenLabs,
    RunningHub, Submagic and Mixpost. Its Mixpost nodes come from the community package n8n-nodes-gravitysocial, which
    must be installed under Settings, Community nodes. Install it before you import, or n8n shows those three nodes as
    unknown.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Make the sheet below, then copy its ID: the long part of its address between /d/ and /edit.
  3. Add a Google Sheets OAuth2 credential. In Get row and Update row in sheet, select it and replace YOUR_SHEET_ID
    with the ID.
  4. In Download IG Reel, replace <YOUR_APIFY_TOKEN> in the Authorization header with your token. The brackets go too.
  5. Add an OpenAI credential and select it in OpenAI Chat Model.
  6. Fix the retry loop as Good to know shows.
  7. Put one reel link in ReelURL on the sheet's second row and leave the other columns empty.
  8. Save and press Execute workflow. When Script, Caption and Overlay fill in, press Publish.

The switched-off part

  1. Install n8n-nodes-gravitysocial if you have not.
  2. In API Setup, replace YOUR_API_KEY with your ElevenLabs key, YOUR_VOICE_ID with an ElevenLabs voice,
    YOUR_RUNNINGHUB_API with your RunningHub key and YOUR_SUBMAGIC_API with your Submagic key.
  3. Add a Google Drive OAuth2 credential. Select it in getImage and Upload file, and put the photo's file ID in
    getImage in place of YOUR_IMAGE_FILE_ID.
  4. Add a Mixpost credential and select it in Upload video, Get many accounts and Create a post. Replace
    YOUR_WORKSPACE_UUID in all three with your Mixpost workspace.
  5. Select your Google Sheets credential in Update row in sheet1 and replace YOUR_SHEET_ID there.
  6. Select the 25 switched-off nodes and turn them on (the D key), then save.

The sheet

One tab, Sheet1, with these headers in its first row: ReelURL, Script, Caption, Overlay, Approved and
Video Link. Put a reel link in ReelURL and leave the rest empty. The first part fills Script, Caption and
Overlay, and the second part fills Video Link. No node reads Approved, so use it as your own mark of which scripts
should become videos.

How a run goes

  1. Schedule Trigger starts a run every minute. Get row reads the rows whose Script is empty, and Limit keeps the
    first one.
  2. fixURL cleans the link, and Download IG Reel calls the Apify actor 3C7L8IMQOkq3isV2Y and waits for its reply:
    the reel's transcript, caption, hashtags and a status.
  3. Check Status goes on when status is success. Any other answer goes to Wait, which pauses 2 seconds and calls
    the actor again (read Good to know before you publish).
  4. Generate Script, Caption, Overlay sends the transcript, caption and hashtags to gpt-4.1-mini. It asks for a script
    of about 60 to 75 words in the same shape. It also wants a caption with up to five hashtags and an overlay line of at
    most eight words. Structured Output Parser holds the reply to Script, Caption and Overlay.
  5. Update row in sheet writes the three into the same row, found by its row number.

The switched-off part starts at its own trigger, Webhook, so nothing in the first part calls it. Send it a POST, from
a button, a script or another workflow, with the row's new script and caption and its row number:

{
  "Script": "<the script from the sheet>",
  "Caption": "<the caption from the sheet>",
  "row": 2
}
  1. API Setup holds the four keys. getImage downloads the avatar photo, and generateAudio has ElevenLabs read
    Script aloud with eleven_multilingual_v2.
  2. uploadImage and uploadAudio send both files to RunningHub, and Merge2 with Aggregate puts the two replies in
    one list.
  3. createTask starts RunningHub workflow 1996082549246083074 with the photo, the voice and a centered crop.
    checkStatus and Switch check it, after 6 seconds and then once a minute through Wait2, until it reads SUCCESS.
  4. getOutput fetches the video's address, and Submagic Create Task sends it to Submagic with the Hormozi 2 caption
    template, zooms and B-roll on 60 percent of it. Check status and Switch1 poll Submagic through Wait6 until it
    reads completed.
  5. Download Video fetches the result. Upload video gives it to Mixpost, Get many accounts finds the workspace's
    Instagram account, and Create a post makes a reel post with the caption.
  6. Upload file is meant to save the video to the top of your Google Drive, and Update row in sheet1 to write its
    link into Video Link.

Change the look

  • The script's rules: the message in Generate Script, Caption, Overlay. It sets the length, the hook, the shape, a
    closing call to follow and an example of the avatar's way of speaking. Every script ends with the same follow line,
    so change that line to your own.
  • The caption and the overlay: steps 2 and 3 of the same message.
  • How often it looks for new links: Schedule Trigger.
  • The voice: voice_id in API Setup, and model_id in generateAudio.
  • The captions' style: templateName, magicZooms, magicBrolls and magicBrollsPercentage in Submagic Create Task,
    and its fixed title, which reads My Awesome Video.

Good to know

  • The retry loop: on a retry, Download IG Reel reads ReelURL from the item in front of it, which is then the actor's
    reply and not your row. Unless that reply has a ReelURL field, the call goes out with an empty address, fails again
    and repeats every 2 seconds, each time as a new paid actor run. Before you publish, change the address in its body to
    {{ $('fixURL').item.json.ReelURL }}, or point the false branch of Check Status at a stop.
  • Overlapping runs: the actor can take more than a minute to transcribe a reel, and the row's Script stays empty until
    the end. The next minute's run then picks the same row and pays for it again. Set Schedule Trigger to a longer gap,
    such as 10 minutes.
  • Executions: a trigger every minute is 1,440 runs a day, the empty ones included. Check your n8n plan's allowance.
  • Model shutdown: OpenAI's deprecations page, read on 2 November 2026, lists GPT-4.1 mini for shutdown on 14 January 2027,
    with gpt-6-luna as its replacement.
  • Cost of a reel: the actor is sian.agency's Instagram AI Transcript Extractor. Its free tier listed $0.028 for each
    transcribed reel plus $0.005 for each start, read on 2 November 2026. OpenAI bills one gpt-4.1-mini call a row.
  • The switched-off part has three faults to fix before you rely on it. First, the file field of Upload file is an
    expression that returns the video itself, not a field name. Its input also comes from Create a post, which carries
    no file, so it fails as written. Connect it after Download Video with the field data. Second, Wait6 waits only
    1 second between Submagic checks. Third, a RunningHub or Submagic status the two Switch nodes do not name stops the run
    with an error.
  • Someone else's reel: the prompt keeps the original's topic and structure and changes the words. Check Instagram's rules
    on reused content, and the creator's rights, before you post a remake.
  • Your data: the reel's link goes to Apify and its words to OpenAI. In the second part, the script goes to ElevenLabs,
    the photo and the voice to RunningHub, and the video to Submagic, Mixpost and Google Drive.
  • Keys: in the second part the four keys sit in API Setup, a plain node, so take them out before you share the
    workflow. The Apify token sits in a header of Download IG Reel.
Files
README.md  9 KB
workflow.json  39 KB

2 files, 48 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-03

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

anaksor-ocr

Sokheng · Kit

Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…

New

Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…

New

ACE-Step 1.5 XL SFT

ACE-Step · Kit

Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…

New

Similar in Marketing & SEO

See all in Marketing & SEO

Huashu Design

alchaincyf · Skill

Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…

New29.4k

Pixel Art XL

nerijs · Kit

A pixel art style add-on for Stable Diffusion XL that turns text prompts into pixel-style images, with an optional LCM LoRA for faster runs. For game makers, d…

New

Licon MSR for LTX-2.5

LiconStudio · Kit

Keeps characters, clothing, objects and backgrounds consistent in generated video by feeding the model up to five reference images. A LoRA for LTX-2.5 in Comfy…

New