Context:
I’ve built a workflow in n8n that:
-
Reads competitor usernames from Google Sheets
-
Limits to the top 3 Instagram users
-
Outer loop: Iterates competitor by competitor
-
For each competitor:
-
Scrapes their top 20 reels
-
Sorts by views and limits to 2 reels
-
Inner loop: Processes these 2 reels one by one (because my transcript API can’t handle batch requests)
-
Sends each reel to a Transcribe API
-
Runs the transcript through an AI Agent for hook analysis
-
Appends results back to Google Sheets
-
Problem:
-
The inner loop (“Loop over 2 Reels”) runs perfectly for the first competitor. It processes 2 reels sequentially (transcribe → AI Agent → append to sheet).
-
But when the outer loop moves on to the second competitor, the inner loop is completely skipped. It immediately triggers the Done branch, so only the first competitor gets processed — the other 2 competitors are ignored.
Tried:
-
Using the Reset option on the inner loop — didn’t help. Instead it sometimes takes its own output as new input and errors.
-
Looked through this community post (Loop node only processes the first item, how to fix?) but couldn’t make it work in my case.
-
Without the loop, both reels are sent together → my Transcribe API throws
429 Too Many Requests, so looping one-by-one is required.
Goal / Requirement:
I need the inner loop to reliably process reels one by one for every competitor. So if there are 3 competitors × 2 reels each, the loop should run 6 times in total (2 for each competitor).
Resources:
-
Attached workflow file + example input data in Google Drive (so you can see exactly what the loops receive).
-
Screenshot of my workflow (outer loop for competitors → inner loop for reels → transcription → AI analysis → Google Sheets).
Question to the community:
What’s the correct way to wire nested SplitInBatches loops so that the inner one resets properly for each new outer loop item? Am I misunderstanding how to use the Loop vs Done outputs?
