Mindket

Social profile scraper into Google Sheets

Newversion 2 · updated

Overview

An n8n workflow that takes a LinkedIn, YouTube, Instagram or X profile link in its chat, scrapes recent posts through Apify and logs them in Google Sheets, one tab per network. New Instagram and YouTube rows then get a transcript.

Social profile scraper into Google Sheets is an n8n workflow in the Marketing & SEO category, listed by Mindket. It is free. This is version 2, 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 into a new workflow there
  • Your own n8n server: the same file, the same steps
  • Google Sheets: sort, filter and chart the posts, or search the transcripts
  • A second workflow: the rows can feed a summary or a list of content ideas

Platform

Connects 3 apps

How it works

Trigger

A profile link in the chat

It starts when a message reaches n8n’s built-in chat. The message is the link of one profile or channel:

  • A LinkedIn, YouTube, Instagram or X link, as the chat message

Actions

  1. GPT-4o mini reads the link and picks the network: LinkedIn, YouTube, Instagram or X
  2. That network’s Apify scraper fetches recent posts: 20 for LinkedIn and X, 30 reels for Instagram, 10 videos and 10 shorts for YouTube
  3. Looks each link up in your spreadsheet and writes only the new posts to that network’s tab in Google Sheets
  4. Within a minute a new Instagram row is picked up: the reel is downloaded, OpenAI transcribes it and the text goes into the row
  5. A new YouTube row gets its captions from a second Apify actor, GPT-4o joins them into one text and the row is updated

Result

A Google Sheet with one tab per network holding the latest posts, and a transcript beside each Instagram reel and YouTube video

Integrations

What you need before you start.

Apify

Web scraping

Runs one actor per network to fetch the posts, and a fifth to fetch YouTube captions, each called over HTTP and waited for.

NeedsApify API token, in five nodes, and a proxy group for the transcript actor

OpenAI

Sorting and transcription

GPT-4o mini sorts the link by network, the audio transcription turns each Instagram reel into text, and GPT-4o joins a video’s captions into one text.

NeedsOpenAI API key, in three nodes

Google Sheets

Storage and triggers

Holds one tab per network. Nodes look up, add and update rows, and two triggers watch the Instagram and YouTube tabs for new rows.

NeedsGoogle sign-in and a spreadsheet with four tabs, in 12 nodes

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
33 steps, starting on a chat message or on a Google Sheets event
AI
3 steps call an AI model: Text Classifier, OpenAI and OpenAI1
Sign-ins
Signs in to: Google Sheets, OpenAI, Google service account and Apify
API keys
No API key is left in the file; 1 blank in it for your own key
Step types
Mindket’s checker reads all 10 of its step types

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

About

What it is

This n8n workflow logs the recent posts of a social profile in a spreadsheet. You send n8n’s built-in chat the link of a LinkedIn, YouTube, Instagram or X profile. GPT-4o mini reads the link and picks the network, and that network’s Apify scraper fetches the posts: 20 from LinkedIn and X, 30 reels from Instagram, 10 videos and 10 shorts from YouTube. The scraped items are checked against the rows already in your spreadsheet, and the new ones go into that network’s tab. Two more branches watch the Instagram and YouTube tabs for new rows. OpenAI transcribes each reel, a second Apify actor fetches each video’s captions for GPT-4o to join into one text, and both transcripts are written back into their rows.

Who it suits

Marketers, researchers and creators who follow other accounts and want the posts in a sheet they can sort and search. It only reads public profiles: nothing is posted or changed on any network.

Who uses it, and how
IndustryWho uses itHow they use itExample
Marketing agenciesSocial media managersFollow the accounts of a client’s competitorsA manager sends five competitor links on Friday and reads the new posts in the sheet.
Content and mediaContent strategistsSee which posts and videos a channel’s audience reacts toA strategist sorts a channel’s tab by view count to find the topics that draw the most views.
Sales and recruitingAccount managersRead a prospect’s recent posts before a callA rep opens the LinkedIn tab and scans a prospect’s last 20 posts.
ResearchAnalysts and journalistsCollect an organisation’s public posts for later readingAn analyst keeps a month of an organisation’s X posts in one tab and searches them.
Video creatorsYouTubers and Reels makersRead the transcripts of videos that work in their fieldA creator searches the Transcript column for how other channels open a video.

You need some n8n: importing a file, adding three credentials and swapping placeholders in 17 nodes, plus a spreadsheet of your own with four tabs. If that is new and you would rather not learn it, skip this one. The page it came from estimates 13 minutes, which assumes the accounts and the spreadsheet already exist.

Where to use it

Any n8n you run will do, as long as it can reach Apify, OpenAI and Google.

  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file, the same steps
  • Google Sheets: sort, filter and chart the posts, or search the transcripts
  • A second workflow: the rows can feed a summary or a list of content ideas

Setup

Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Have these ready before you import it.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
OpenAIAn API key, for the classifier, the reel transcripts and the caption join
ApifyAn API token, and a proxy group your account can use for the YouTube transcripts
Google SheetsA Google account and a spreadsheet with four tabs, whose headers the README lists
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add an OpenAI credential and select it in OpenAI Chat Model, OpenAI and OpenAI1.
  3. Add a Google Sheets credential and select it in the 12 Sheets nodes. They are the four Add Records nodes, the four Find nodes, Update IG Sheet Transcript, Update YT Sheet Transcript and the two Trigger: Row Added nodes.
  4. In those nodes, swap YOUR_SHEET_ID for your spreadsheet’s id. Swap YOUR_IG_REELS_TAB_ID, YOUR_YOUTUBE_TAB_ID and YOUR_X_TAB_ID for the ids of those tabs. The LinkedIn nodes use gid=0, the first tab.
  5. In the Authorization header of LinkedIn Scraper, YouTube Scraper, Instagram Reel Scraper, X Scraper and Generate Transcript, swap <YOUR_APIFY_TOKEN> for your Apify token and keep the word Bearer and its space.
  6. In Generate Transcript, swap YOUR_APIFY_PROXY_GROUP in the body for the name of the proxy group you chose.
  7. Save, open the chat from the editor and send one profile link as a test. Then press Publish, because the two Sheets triggers only run on a published workflow.

The page it came from tells you to create an Apify credential and pick it in an Authentication section. The file holds no such setting, so the token goes in the header fields. If you would rather keep it in a credential, create an HTTP Header Auth credential, select it in those five nodes and delete their Authorization header.

How to use it

Open the chat from the editor and send one link per message: a profile for LinkedIn, Instagram or X, a channel for YouTube. The scraper waits for Apify to finish, and the posts appear in that network’s tab. Within a minute the Sheets trigger sees the new Instagram or YouTube rows and starts their transcripts, one row at a time, and the Transcript column fills in. A video or reel that is already in the sheet is not added again.

What to change for a different result
To changeWhere
How many posts come backlimit in LinkedIn Scraper, maxItems in X Scraper, resultsLimit in Instagram Reel Scraper, maxResults and maxResultsShorts in YouTube Scraper
Which networksThe categories of Text Classifier, plus a scraper and its sheet nodes for a new one
Which columns are savedThe field list in each Add Records node. Keep url as the matching column
How soon transcripts startThe polling time of the two Trigger: Row Added nodes, now every minute
Which modelsgpt-4o-mini in OpenAI Chat Model and gpt-4o in OpenAI1

Example

A message sent to the chat:

https://www.youtube.com/@examplechannel

The classifier answers YouTube, and YouTube Scraper sends this to its Apify actor. Its body also holds a list of switches, all off, which is left out here.

{
  "maxResults": 10,
  "maxResultsShorts": 10,
  "sortVideosBy": "NEWEST",
  "startUrls": [
    { "url": "https://www.youtube.com/@examplechannel", "method": "GET" }
  ]
}

Each new video becomes a row in the YouTube tab with its title, link, views and likes. Then Generate Transcript fetches its captions, OpenAI1 joins them and the Transcript column of that row fills in.

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. This file holds three small workflows side by side: one starts from the chat and scrapes, and two start when a sheet gets a new row. Send one link first, read that run under Executions, then publish. Each node shows what it received and what it sent, which is where a wrong token or a missing tab id turns up.

For experts. The four networks follow one pattern. Only Instagram and YouTube get a transcript.

The four branches
NetworkApify inputRow keyTranscript
LinkedIncompany_name, limit 20, sort recenturl, filled from post_urlNone
YouTubestartUrls, maxResults 10, maxResultsShorts 10urlGenerate Transcript, then OpenAI1
Instagramusername, resultsLimit 30urlDownload IG Reel, then OpenAI
XstartUrls, maxItems 20, sort LatesturlNone

Each branch has a Find node that looks the link up in the sheet. A Merge node (Merge3 for LinkedIn, Merge1 for YouTube, Merge for Instagram, Merge2 for X) combines it with the scraped items on url. It keeps the ones with no match and passes them to Add Records. On the YouTube branch, If2 also drops any item without an id.

Good to know

Each run spends money on two services, and it reads other people’s accounts.

  • Billing: Apify bills every scraper run, and OpenAI bills the classifier, the reel transcripts and the caption join. A first run on a busy Instagram profile can transcribe 30 reels
  • One link per message: the classifier has four categories and no fallback for anything else
  • What each actor expects: LinkedIn Scraper sends the message as company_name and Instagram Reel Scraper sends it as username. Try each network once with a real link and read what the actor returned. If one rejects a full link, send what it asks for
  • Long videos: OpenAI1 gets a video’s whole caption list in one request, so a long video costs more and a huge one may exceed the model’s limit
  • Terms and privacy: scraping can break a network’s terms, and the sheet will hold other people’s names, posts and follower counts. Check the terms and keep the spreadsheet private
  • Two checks for your first run: the LinkedIn check compares url, while the scraper’s items carry post_url, so it may keep every post. Add Records to LI Sheet then updates a repeat in place. And Update IG Sheet Transcript reads url from Download IG Reel, whose output is the downloaded file. Confirm the transcript lands on the right row, and if it does not, read url from Loop Over Items
  • Publish first: the two Sheets triggers do nothing until the workflow is published
  • Merge order: keep the sheet lookup on the first input and the scraper on the second if you rewire a Merge
  • Actors: the file names each Apify actor only by its id, in the node’s address. Open each id on Apify to see what it is and what it costs
  • Keys: the Apify token sits in header fields of five nodes, so it travels with any export of the workflow
  • Repairs: the file pointed Find YT Rows, Find IG Rows and Find X Rows at a template copy of the spreadsheet, a different file from the one the other nodes write to. Mindket points every Sheets node at YOUR_SHEET_ID. It also replaced the author’s Apify proxy group in Generate Transcript with YOUR_APIFY_PROXY_GROUP
  • Credentials: the JSON holds none, and nothing from its author’s account

README and files

README

Social profile scraper into Google Sheets

An n8n workflow. Send its chat the link of a LinkedIn, YouTube, Instagram or X profile. It scrapes recent posts through
Apify and logs them in a Google Sheet, one tab per network. New Instagram and YouTube rows then get a transcript.

What is inside

  • workflow.json: the workflow as n8n exports it, 37 nodes, three of them sticky notes. It holds no credential. The
    Apify token, the spreadsheet and tab ids, and an Apify proxy group name are left as placeholders.
  • README.md: these notes.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • An OpenAI API key.
  • An Apify account and its API token. The file calls five Apify actors, and each run is billed to that account.
  • A proxy group your Apify account can use, for the YouTube transcript step.
  • A Google account and a spreadsheet of your own with four tabs. The headers are below.

Prepare the spreadsheet

Make one spreadsheet with four tabs. Row 1 of each tab holds these headers exactly, because the nodes find columns by
name. The tab names do not matter, since the nodes pick a tab by its id.

  • LinkedIn, as the first tab: url, posted_at, text, author, profile_url, follower_count
  • YouTube: url, date, channelName, channelUrl, numberOfSubscribers, viewCount, title, thumbnailUrl,
    id, videoUrl, Caption, likes, duration, Transcript
  • Instagram reels: url, timestamp, Created, ownerUsername, videoUrl, Transcript, caption, likesCount,
    hashtags/0 up to hashtags/15, videoViewCount, videoDuration, commentsCount
  • X: url, author, createdAt, author/twitterUrl, author/followers, viewCount, likeCount, text

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Add an OpenAI credential and select it in OpenAI Chat Model, OpenAI and OpenAI1.
  3. Add a Google Sheets credential and select it in the 12 Sheets nodes: Add Records to IG Sheet,
    Add Records to YT Sheet, Add Records to LI Sheet, Add Records to X Sheet, Find IG Rows, Find YT Rows,
    Find LI Rows, Find X Rows, Update IG Sheet Transcript, Update YT Sheet Transcript and the two
    Trigger: Row Added nodes.
  4. In those nodes, swap YOUR_SHEET_ID for your spreadsheet's id. Swap YOUR_IG_REELS_TAB_ID, YOUR_YOUTUBE_TAB_ID
    and YOUR_X_TAB_ID for the ids of those tabs, the number after gid= in a tab's address. The LinkedIn nodes use
    gid=0, the first tab.
  5. In the Authorization header of LinkedIn Scraper, YouTube Scraper, Instagram Reel Scraper, X Scraper and
    Generate Transcript, swap <YOUR_APIFY_TOKEN> for your Apify token. Keep the word Bearer and the space after it.
  6. In Generate Transcript, swap YOUR_APIFY_PROXY_GROUP in the body for the name of the proxy group you chose.
  7. Save, open the chat from the editor and send one profile link as a test. Then press Publish at the top of the canvas
    (or Shift+P), because the two Sheets triggers only run on a published workflow.

The page this came from tells you to create an Apify credential and pick it in an Authentication section. The file
holds no such setting, so the token goes in the header fields. To keep it in a credential instead, create an HTTP
Header Auth credential, select it in those five nodes and delete their Authorization header.

How a run goes

  • A chat message goes to Text Classifier, which uses OpenAI Chat Model (GPT-4o mini). It sorts the link into
    LinkedIn, YouTube, Instagram or X, and each choice has its own output.
  • That output feeds one scraper, which calls an Apify actor and waits for the result. LinkedIn Scraper asks for 20
    posts, X Scraper for 20, Instagram Reel Scraper for 30 reels and YouTube Scraper for 10 videos and 10 shorts.
  • A Find node looks the link up in the sheet. A Merge node keeps the scraped items with no match, and an
    Add Records node writes them to that network's tab. On the YouTube branch, If2 also drops any item without an
    id.
  • Instagram transcripts: Trigger: Row Added (IG Sheet) checks the tab every minute, and If passes rows whose
    Transcript is empty. Loop Over Items takes one row at a time. Download IG Reel fetches videoUrl and OpenAI
    transcribes the audio. Then Edit Fields names the text Transcript and Update IG Sheet Transcript writes it to
    the row, matching on url.
  • YouTube transcripts: Trigger: Row Added (YT Sheet), If1 and Loop Over Items1 work the same way. Then
    Generate Transcript asks a second Apify actor for the video's captions, OpenAI1 (GPT-4o) joins them into one text,
    Edit Fields1 names it Transcript and Update YT Sheet Transcript writes it.
  • LinkedIn and X posts are logged without a transcript.

Change the look

  • Posts per run: limit in LinkedIn Scraper, maxItems in X Scraper, resultsLimit in Instagram Reel Scraper,
    maxResults and maxResultsShorts in YouTube Scraper.
  • Networks: the categories of Text Classifier. A new network also needs its own scraper, Find, Merge and
    Add Records nodes.
  • Saved columns: the field list in each Add Records node. Keep url as the matching column.
  • Polling: the two Trigger: Row Added nodes check every minute.
  • Models: gpt-4o-mini in OpenAI Chat Model and gpt-4o in OpenAI1.

Good to know

  • Each run is billed twice over. Apify bills every scraper run, and OpenAI bills the classifier, the reel transcripts
    and the caption join. A first run on a busy Instagram profile can transcribe 30 reels.
  • Send one link per message. The classifier has four categories and no fallback for anything else.
  • LinkedIn Scraper sends the message as company_name and Instagram Reel Scraper sends it as username. Try each
    network once with a real link and read what the actor returned. If one rejects a full link, send what it asks for.
  • OpenAI1 gets a video's whole caption list in one request, so a long video costs more and a huge one may exceed
    the model's limit.
  • Scraping can break a network's terms, and the sheet will hold other people's names, posts and follower counts. Check
    the terms and keep the spreadsheet private.
  • Two checks for your first run. The LinkedIn check in Merge3 compares url, while the scraper's items carry
    post_url, so it may keep every post, and Add Records to LI Sheet then updates a repeat in place. And
    Update IG Sheet Transcript reads url from Download IG Reel, whose output is the downloaded file. Confirm the
    transcript lands on the right row. If it does not, read url from Loop Over Items instead.
  • The four Merge nodes depend on the order of their inputs: the sheet lookup first, the scraper second. Keep it if
    you rewire them.
  • The file names each Apify actor only by its id, in the node's address. Open each id on Apify to see what it is and
    what it costs before you run it.
  • The Apify token sits in header fields of five nodes, so it travels with any export of the workflow. Take it out
    before you share it.
  • The copy Mindket started from pointed Find YT Rows, Find IG Rows and Find X Rows at a template copy of the
    spreadsheet, a different file from the one the other nodes write to. Mindket points every Sheets node at
    YOUR_SHEET_ID. It also replaced its author's Apify proxy group in Generate Transcript with
    YOUR_APIFY_PROXY_GROUP.
Files
README.md  7 KB
workflow.json  63 KB

2 files, 71 KB, downloaded as a zip.

What’s new

  • Version 2 · 2026-11-09

    Updated by Mindket to the current version of this kit.

  • 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