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…
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.
Every minute
It starts every minute and takes the first row of Sheet1 with an empty Script, which holds:
A sheet where each reel link has a new script, caption and overlay line to record, with an avatar video as an option
What you need before you start.
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
Reel transcripts
Runs an Instagram transcript actor that returns the reel’s spoken words, caption and hashtags.
NeedsApify API token, typed into a header
Language model
Runs gpt-4.1-mini to rewrite the script, the caption and the overlay line.
NeedsOpenAI API key
File storage
Holds the avatar’s photo and, once repaired, takes the finished video.
NeedsA Google account, for the switched-off part
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
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
Captions and B-roll
Adds styled captions, zooms and B-roll to the avatar video.
NeedsSubmagic API key, for the switched-off part
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
Checked by Mindket on 13 Nov 2026
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.
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.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Social media agencies | Content strategists | Collect a niche’s top reels in the sheet and rewrite them for a client | An agency drops ten fitness reels in on Monday and reviews a rewritten script for each. |
| Coaching and courses | Solo creators | Turn a reel that did well in their field into their own take | A business coach rewrites a list of tools into a list of her own picks. |
| Online retail | Brand marketers | Borrow a format from reels in their category for their own product | A skincare brand keeps a three-step format and fills it with its own routine. |
| Faceless channels | Channel owners who use AI avatars | Turn on the second part to make and post avatar videos | A 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.
Any n8n that can reach Apify, OpenAI and Google runs the first part. The drafts land beside each link in your sheet.
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.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| Apify | An API token, typed into a header |
| OpenAI | An API key that can use gpt-4.1-mini |
| An account that can edit the sheet, for a Google Sheets OAuth2 credential | |
| The second part | Keys for ElevenLabs, RunningHub, Submagic and Mixpost, a photo in Google Drive, and the community node n8n-nodes-gravitysocial |
| Tab | Columns |
|---|---|
Sheet1 | ReelURL, Script, Caption, Overlay, Approved and Video Link. You fill ReelURL, and the workflow fills the rest except Approved |
workflow.json./d/ and /edit.Get row and Update row in sheet, select it and replace YOUR_SHEET_ID with the ID.Download IG Reel, replace <YOUR_APIFY_TOKEN> in the Authorization header with your token. The brackets go too.OpenAI Chat Model.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
}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.
| To change | Where |
|---|---|
| The script’s length, hook and shape | The message in Generate Script, Caption, Overlay |
| The closing line | The same message, which ends every script with one fixed call to follow |
| How often it looks | Schedule Trigger, every minute now |
| The voice | voice_id in API Setup and model_id in generateAudio |
| The captions’ look | templateName and the B-roll settings in Submagic Create Task |
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.
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.
| Node | Service or model | What to know |
|---|---|---|
Download IG Reel | Apify run-sync, actor 3C7L8IMQOkq3isV2Y | One call that waits for the transcript. Its retry loop is the risk under Good to know |
Generate Script, Caption, Overlay | gpt-4.1-mini through OpenAI Chat Model | A basic chain with a parser, with no agent and no tools |
generateAudio | ElevenLabs text to speech, eleven_multilingual_v2 | Returns an MP3 at 44.1 kHz and 128 kbps |
createTask | RunningHub workflow 1996082549246083074 | Takes the uploaded photo and voice by their file names |
Submagic Create Task | Submagic’s projects API | Template Hormozi 2, zooms on, B-roll on 60 percent |
Create a post | Mixpost, through the community node | A reel post on the first Instagram account in the workspace |
The first part has a costly retry loop to fix before you publish, and the second has faults of its own.
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 }} firstSchedule Trigger to 10 minutes or moregpt-6-luna as its replacementUpload 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 secondAPI Setup, so take them out before you share itAn 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'sgpt-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.
workflow.json: the workflow as n8n exports it, 41 nodes. Five are sticky notes that number its parts. The first part,README.md: these notes.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/https:\/\/www\.instagram\.com\/[^\/]+\/(reel|reels|p)\//, which takes the account name out of a link such asinstagram.com/<name>/reel/<id>/.Download IG Reel read Bearer <token>. It now reads Bearer <YOUR_APIFY_TOKEN>.Get row, Update row in sheet and Update row in sheet1 ask for YOUR_SHEET_ID and useSheet1.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.gpt-4.1-mini.n8n-nodes-gravitysocial, whichworkflow.json./d/ and /edit.Get row and Update row in sheet, select it and replace YOUR_SHEET_IDDownload IG Reel, replace <YOUR_APIFY_TOKEN> in the Authorization header with your token. The brackets go too.OpenAI Chat Model.ReelURL on the sheet's second row and leave the other columns empty.Script, Caption and Overlay fill in, press Publish.n8n-nodes-gravitysocial if you have not.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.getImage and Upload file, and put the photo's file ID ingetImage in place of YOUR_IMAGE_FILE_ID.Upload video, Get many accounts and Create a post. ReplaceYOUR_WORKSPACE_UUID in all three with your Mixpost workspace.Update row in sheet1 and replace YOUR_SHEET_ID there.One tab, Sheet1, with these headers in its first row: ReelURL, Script, Caption, Overlay, Approved andVideo Link. Put a reel link in ReelURL and leave the rest empty. The first part fills Script, Caption andOverlay, and the second part fills Video Link. No node reads Approved, so use it as your own mark of which scripts
should become videos.
Schedule Trigger starts a run every minute. Get row reads the rows whose Script is empty, and Limit keeps thefixURL cleans the link, and Download IG Reel calls the Apify actor 3C7L8IMQOkq3isV2Y and waits for its reply:transcript, caption, hashtags and a status.Check Status goes on when status is success. Any other answer goes to Wait, which pauses 2 seconds and callsGenerate Script, Caption, Overlay sends the transcript, caption and hashtags to gpt-4.1-mini. It asks for a scriptStructured Output Parser holds the reply to Script, Caption and Overlay.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
}
API Setup holds the four keys. getImage downloads the avatar photo, and generateAudio has ElevenLabs readScript aloud with eleven_multilingual_v2.uploadImage and uploadAudio send both files to RunningHub, and Merge2 with Aggregate puts the two replies increateTask 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.getOutput fetches the video's address, and Submagic Create Task sends it to Submagic with the Hormozi 2 captionCheck status and Switch1 poll Submagic through Wait6 until itcompleted.Download Video fetches the result. Upload video gives it to Mixpost, Get many accounts finds the workspace'sCreate a post makes a reel post with the caption.Upload file is meant to save the video to the top of your Google Drive, and Update row in sheet1 to write itsVideo Link.Generate Script, Caption, Overlay. It sets the length, the hook, the shape, aSchedule Trigger.voice_id in API Setup, and model_id in generateAudio.templateName, magicZooms, magicBrolls and magicBrollsPercentage in Submagic Create Task,title, which reads My Awesome Video.Download IG Reel reads ReelURL from the item in front of it, which is then the actor'sReelURL field, the call goes out with an empty address, fails again{{ $('fixURL').item.json.ReelURL }}, or point the false branch of Check Status at a stop.Script stays empty untilSchedule Trigger to a longer gap,gpt-6-luna as its replacement.gpt-4.1-mini call a row.Upload file is anCreate a post, which carriesDownload Video with the field data. Second, Wait6 waits onlyAPI Setup, a plain node, so take them out before you share theDownload IG Reel.README.md 9 KB workflow.json 39 KB
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…
Qwen · Kit
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…
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…
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…
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…
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…