Recipe · Social

Instagram profile posts

Opens one Instagram profile in this profile's signed-in session, scrolls the grid and files every post into Posts — permalink, caption and thumbnail, keyed so walking the same account again updates rather than duplicates. Runs on this machine only: it uses a session you are signed in to, and a session never leaves your computer.

On this page

What it does

One Instagram profile's grid, scrolled and filed as rows: permalink, caption and thumbnail. Uses the session already in this profile, so it runs on this machine only.

It runs against one profile, through that profile's own proxy and with its own cookies — so the pages load the way that account's owner would see them. It navigates, so give it a profile whose session you are happy to have in use.

One profileIts own proxy and cookiesThe Posts table2 settings on the run

The 16 steps

The real tree, read out of the pack the launcher ships. Indentation is nesting: the steps under a loop run once per row, and the ones under a branch run only when the condition above them holds. Every {{…}} is a value filled in at run time — from the row being walked, from a setting on the run, or from the profile itself.

evaluateStamp the passRun script
setVarStart this run as unfinishedSet verdict
setVarClear the last diagnosisSet diagnosis
evaluateBuild the profile URLRun script
gotoOpen the profileGo to {{vars.profile_url}}
waitForWait for the gridWait for selectoron failure: continue
waitWait
evaluateReady the collectorRun script
loopRead, then scrollLoop times

Each time

evaluateCollect what is on screenRun scripton failure: continue
waitWait
evaluateTake everything collectedRun script
evaluateWhat happened here?Run scripton failure: continue
evaluateWhy did it match nothing?Run scripton failure: continue
saveRowsFile what was collectedSave to Posts
screenshotScreenshoton failure: continue

Each of those is one of the step types on the automation reference, with the same fields the editor shows and the same fields an agent is handed over the local API.

The tables it uses

These load with the recipe. A dataset is a typed table your workspace owns — the columns are named and typed up front so the steps can address them, and every one of them is yours to rename, extend or fill from a file afterwards.

Posts

writes

Posts as a profile grid drew them: permalink, caption and thumbnail, keyed on the permalink so walking the same profile again updates rather than duplicates.

row_key
Key · text
post_url
Post · url
caption
Caption · longText
thumbnail
Thumbnail · url
author
Account · text
source_url
Found on · url
platform
Platform · text
collected_at
Collected at · datetime
profile
Collected by · profile
logged_in
Signed in · select · Signed out | Signed in

Re-running updates the row it already wrote rather than adding a second one. That is what the match column in the save step is for, and it is the difference between a status check and a table that doubles in size every pass.

What it asks you for

Settings are filled in when the run starts, and every profile can hold its own values — which is how one workflow serves a whole folder of accounts.

account
Account · text · required

The handle, with or without the @. Not a URL — the run builds it, so a link copied out of the app with its tracking parameters still works.

max_items
Stop after · number

How many posts to keep. The scroll stops as soon as it has this many, so a small number is a short run rather than a truncated one.

Loading it

In the launcher, open Automations, choose Load a starter pack, and pick Social. Untick anything you do not want. The tables land first, then the workflows, then a project called Social that links them together.

What arrives is an ordinary automation row. Open it in the editor, change a step, rename it, delete it — nothing in the app treats it as special afterwards, and loading the pack a second time makes a fresh copy rather than overwriting the one you edited. Tables are the opposite: an existing table of the same name is reused and keeps its rows.